一、修改器方法,7种(改变原数组)
let arr = [12,34,26];
let len = arr.unshift(99);
console.log(len); // 返回一个新的长度 4
console.log(arr); // 结果为 [99,12,34,26]
let arr = [12,34,26];
let val = arr.shift();
console.log(val); // 返回删除的第一个元素 12
console.log(arr); // 结果为 [12,34]
let arr = [12,34,26];
let len = arr.push(100);
console.log(len); // 返回一个新的长度 4
console.log(arr); // 结果为 [12,34,26,100]
let arr = [12,34,26];
let val = arr.pop();
console.log(val); // 返回删除的最后一个元素 26
console.log(arr); // 结果为 [12,34]
let arr1 = [12,34,26];
let arr2 = arr1.reverse();
console.log(arr2); // 结果为 [26, 34, 12]
// 增加
let arr1 = [33,44,55,66,77,88];
let d1 = arr1.splice(2,0,'a','b'); // 第一个值为索引,第二个值0表示新增,后面是新增的参数
console.log(d1); // []
console.log(arr1); // [33, 44, "a", "b", 55, 66, 77, 88]
//删除
let arr2 = [33,44,55,66,77,88];
let d2 = arr2.splice(3,2)
console.log(d2) // 返回被删除的值 [66, 77]
console.log(arr2); // [33, 44, 55, 88]
// console.log(arr2.splice(3)); // 删除索引3后面所有的值
// 修改
let arr3 = [33,44,55,66,77,88];
let d3 = arr3.splice(1,1,'x','y','z'); // 第一个值为索引,第二个值表示删除的位数,后面是新增的参数
console.log(d3); // [44] // 删除的值
console.log(arr3); // [33, "x", "y", "z", 55, 66, 77, 88]
let arr = [1,2,11,4,5,6,7,8,9,10,3];
// arr.sort(); // 存在问题,不推荐使用,返回结果 [1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9]
arr.sort(function(a,b){ // return a-b; // 结果[9, 12, 23, 32, 44, 54, 90]
return a-b; // 正序,返回结果 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
})
console.log(arr);
二、访问方法(不改变原数组)
let arr = [1,2,3,4,5,6,7,8,9];
// console.log(arr.slice(0)); // 返回一个新数组,可以实现数组克隆
// console.log(arr.slice(2,8)); // 从索引2开始查找到索引为8的内容,结果为[3, 4, 5, 6, 7, 8]
// console.log(arr.slice(-2,-1)); // [8]
- join() 返回一个通过连接符连接数组元素的字符串
let arr = [12,34,26];
let str = arr.join('-'); // 不传值默认逗号连接
console.log(str); // 结果为 12-34-26
let arr1 = [12,34,26];
let arr2 = [11,34,33];
let arr = arr1.concat(arr2);
console.log(arr); // 结果为 [12, 34, 26, 11, 34, 33]
let arr = [1,2,11,4,5,6,7,8,9,10,3];
let str = arr.toString();
console.log(str); // 1,2,11,4,5,6,7,8,9,10,3
三、迭代方法
let arr = [1,2,11,4,5,6,7,8,9,10,3];
arr.forEach((item, index, array)=>{
console.log(item);
});
let arr = [1, 2, 3];
let arr2 = arr.map((item, index, array) => {
return ++item;
});
console.log(arr2); // [2,3,4]
let arr = [1, 2, 3, 7];
let arr2 = arr.filter((item, index, array) => {
return item > 2;
});
console.log(arr2); // [3,7]
- every() 用于判断所有元素是否符合某一条件,只要有一个不满足即为 false,返回布尔值
let arr = [1, 2, 3, 7];
let bool= arr.every((item, index, array) => {
return item > 2;
});
console.log(bool); // false
- some() 用于判断所有元素是否符合某一条件,只要有一个满足即为 true,返回布尔值
let arr = [1, 2, 3, 7];
let bool= arr.some((item, index, array) => {
return item > 2;
});
console.log(bool); // true
- reduce() 接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,返回最终值
let arr = [1, 2, 3];
let arr2 = arr.reduce((total, currentValue, currentIndex, arr) => {
console.log(total, currentValue)
return total + currentValue
});
console.log(arr2); // 6
let arr3 = arr.reduce((total, currentValue, currentIndex, arr) => {
console.log(total, currentValue)
return total + currentValue
},10); // initialValue 可选,传递给函数的初始值
console.log(arr3); // 16
扩展方法
- includes() 判断一个数组是否包含一个指定的值,包含返回 true
let arr = [33,44,55,66,33,77,88];
let index = arr.includes(33);
console.log(index); // true
- indexOf() 检测当前值在数组中第一次出现的位置索引,如果未找到,返回 -1
let arr = [33,44,55,66,77,88];
let index = arr.indexOf(33);
console.log(index); // 1
- lastIndexOf() 检测当前值在数组中最后一次出现的位置索引,如果未找到,返回 -1
let arr = [33,44,55,66,33,77,88];
let index = arr.lastIndexOf(33);
console.log(index); // 4
- Array.from() 将一个类数组对象或者可遍历对象转换成一个真正的数组
// 字符串
let str = 'abcd';
let arr1 = Array.from(str)
console.log(arr1); // ["a","b","c","d"]
/* 类数组对象
1. 必须具有length属性,如果没有length属性,那么转换后的数组是一个空数组。
2. 属性名必须为数值型或字符串型的数字
*/
let obj = {
0: 1,
'1': 'b',
'length': 2
}
let arr2 = Array.from(obj)
console.log(arr2); // [1,"b"]
// 接受第二个参数
let arr = [1, 2, 3];
let arr3 = Array.from(arr, x => {
return x+=1;
});
console.log(arr3); // [2,,3,4]
网友评论