文章目录
数组(Array)
> 包含类型
let simpleArray = ['one', 2, 'three', true, false, undefined, null];
> 数组长度
Array.length
> 索引
let ourVariable = ourArray[0];
> 设置一个索引位置的元素值
ourArray[1] = "not b anymore";
> push() 将元素插入到数组的末尾
arr.push(7, 'VIII', 9)
> unshift() 将元素插入到数组的开头
arr.unshift('I', 2, 'three')
> pop() 从数组的末尾移除一个元素
greetings.pop();
> shift() 从数组的开头移除一个元素
greetings.shift();
> splice() 从数组中的任意位置连续删除任意数量的元素
splice() 最多可以接受 3 个参数
第一个参数代表从数组中的哪个索引开始移除元素,而第二个参数表示要从数组中的这个位置开始删除多少个元素
let newArray = array.splice(3, 2);
#不仅会修改调用该方法的数组,还会返回一个包含被移除元素的数组
> splice() 添加元素
第三个参数可以是一个或多个元素,这些元素会被添加到数组中
numbers.splice(startIndex, amountToDelete, 13, 14);
#从删除位置插入元素
#第二个参数如果设置为 0,则不会删除项目
> slice() 复制数组元素
slice() 只接收 2 个输入参数:第一个是开始提取元素的位置(索引),第二个是提取元素的结束位置(索引)。 提取的元素中不包括第二个参数所对应的元素
let weatherConditions = ['rain', 'snow', 'sleet', 'hail', 'clear'];
let todaysWeather = weatherConditions.slice(1, 3);
> 使用展开运算符复制数组
let thisArray = [true, true, undefined, false, null];
let thatArray = [...thisArray];
> 使用展开运算符合并数组
let thisArray = ['sage', 'rosemary', 'parsley', 'thyme'];
let thatArray = ['basil', 'cilantro', ...thisArray, 'coriander'];
> 使用 indexOf() 检查元素是否存在
indexOf() 方法接受一个元素作为输入参数,并返回该元素在数组中的位置(索引);若该元素不存在于数组中则返回 -1
let fruits = ['apples', 'pears', 'oranges', 'peaches', 'pears'];
fruits.indexOf('dates');
对象
> 将键值对添加到对象中
const tekkenCharacter = {
player: 'Hwoarang',
fightingStyle: 'Tae Kwon Doe',
human: true
};
添加一个叫做 origin 的属性
tekkenCharacter.origin = 'South Korea';
tekkenCharacter['hair color'] = 'dyed orange';
如果不加上引号,那么中括号里的内容会被当作一个变量来解析,这个变量对应的值就会作为要设置的属性
const eyes = 'eye color';
tekkenCharacter[eyes] = 'brown';
> 使用 delete 关键字删除对象属性
let foods = {
apples: 25,
oranges: 32,
plums: 28,
bananas: 13,
grapes: 35,
strawberries: 27
};
delete foods.apples
> 检查对象是否具有某个属性
users 对象,检查它是否含有 Alan 属性
1. users.hasOwnProperty('Alan');
2. 'Alan' in users;
两者结果都为 true
> 使用 for...in 语句遍历对象
for (let user in users) {
console.log(user);
}
这个变量在遍历对象的语句执行过程中会一直被重置并赋予新值
对象中的键是无序的
> 使用 Object.keys() 生成由对象的所有属性组成的数组
Object.keys(对象)
传入一个对象作为参数
返回一个由对象中所有属性(字符串)组成的数组。 数组中元素的顺序是不确定的。
反转字符串
str.split("").reverse().join("")
计算整数的阶乘
对于整数 n,n 的阶乘就是所有小于等于 n 的正整数的乘积。
阶乘通常用符号 n! 来表示。
例如:5! = 1 * 2 * 3 * 4 * 5 = 120
function factorialize(num) {
for (var product = 1; num > 0; num--) {
product *= num;
}
return product;
}
function factorialize(num) {
if (num === 0) {
return 1;
}
return num * factorialize(num - 1);
}
找出字符串中的最长单词
return Math.max(...str.split(" ").map(word => word.length));
const array1 = [1, 4, 9, 16];
// pass a function to map
const map1 = array1.map(x => x * 2);
console.log(map1);
// expected output: Array [2, 8, 18, 32]
确认结尾
检查字符串是否以给定的目标字符串结束 .endsWith()
1. .endsWith()
2.
function confirmEnding(str, target) {
if(str.slice(-target.length)===target){
return true;
}
else{
return false;
}
}
confirmEnding("Bastian", "n");
重复输出字符串 str.repeat()
1.
var str = "Runoob";
str.repeat(2);
2.
function repeatStringNumTimes(str, num) {
return num > 0 ? str + repeatStringNumTimes(str, num - 1) : '';
}
按参数过滤数组 Array.find()
Array.find()
find()返回数组中满足条件的第一个元素的值。如果没有值满足测试函数,则返回undefined。
const array1 = [5, 12, 8, 130, 44];
const found = array1.find(element => element > 10);
console.log(found);
#返回12
function findElement(arr, func) {
return arr.find(func);
}
findElement([1, 2, 3, 4], num => num % 2 === 0);
句中单词首字母大写
function titleCase(str) {
return str.toLowerCase().replace(/(^|\s)\S/g, L => L.toUpperCase());
}
过滤数组中的假值 Array.filter()
从数组中移除所有假值(falsy values)。
JavaScript 中的假值有 false、null、0、""、undefined、NaN。
function bouncer(arr) {
console.log(arr.filter(Boolean))
return arr.filter(Boolean);
}
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]