-
arr.concat(): 数组一级拆散拼接合并;
参数:可以是多个; 返回值:返回被连接数组的一个副本。 是否修改原数组:N; 特殊: 1.可对数组进行浅拷贝;
var arr = ['a','b','c', ['d']];
var arr1 = arr.concat();
//修改
arr[0] = 'e' // 不会影响到arr1
arr[3][0] = 'd1' // 会同步修改影响到arr1
-
arr.join(): 数组按照参数分割成字符串,多维数组也可以用;
参数:任意字符串,默认为','; 是否修改原数组:N; -
pop() / push() / shift() / unshift();
pop(): 数组尾部删除内容,并返回被删除的数组元素; push(): 向数组尾部推入内容,并返回新数组的length; shift(): 数组头部删除元素,并返回被删除的元素; unshift(): 在数组头部压入元素,并返回新数组的length; 是否改变原数组:Y; -
arr.reverse(): 返回颠倒的原数组;
是否改变原数组:Y; -
arr.slice(start, end): 截取数组元素;
参数: 1.start必选,可以为负数; 2.end非必选。 是否改变原数组:N; -
arr.sort(): 排序,默认为升序;
参数: 1.无,默认升序; 2.callback(a, b); 是否改变原数组:Y; 特殊: 1.默认排序按照字符串顺序排序; 2.回调参数: a: 后一位元素; b: 当前元素;(上一个元素);
排序:
var arr = [2,30,50,25,666];
console.log(arr.sort(fn)); // [2, 25, 30, 50, 666]
console.log(arr); // [2, 25, 30, 50, 666] ---原数组改变
function fn(a,b){ // 第一次 a -> 2; b -> 30;
return a-b;
}
}
-
arr.splice(start,num,data1,data2,...): 在数组指定位置添加/删除/替换数组;
参数: 1.start: 开始下标位置,只传该参数时,默认情况数组; 2.num: 删除的元素个数;(注意不是下标位置,仅表示元素数量) 3.后续参数:为在指定下表位置替换被删除的内容,枚举类型; 是否改变原数组:Y; -
arr.toString(): 转换成字符串,类似join();
是否改变原数组:N; -
arr.indexOf(value, start): 查找参数value在数组中下标,不存在返回-1;
-
arr.lastIndexOf(value, start): 从右至左查找参数value在数组中下标,不存在返回-1;
-
arr.forEach((value,index,self) => {}): 遍历数组,无返回值;
-
arr.map((value,index,self) => {}): 遍历数组,并将所有回调函数的返回值组成新数组返回。
var arr = ["Tom","Jack","Lucy","Lily","May"];
var a = arr.map(function(value,index,self){
return "hi:"+value;
})
console.log(a); //["hi:Tom", "hi:Jack", "hi:Lucy", "hi:Lily", "hi:May"]
console.log(arr); //["Tom", "Jack", "Lucy", "Lily", "May"]---原数组未改变
-
arr.filter((value,index,self) => {}): 过滤(收集),将符合条件的元素组成新数组返回;
是否改变原数组:N;
var a = [1,2,3,4,5,3,4,3,33];
var result = a.filter(
item =>{
return item === 3 // 会检查所有元素
}
)
console.log(result) // [3, 3, 3]
-
arr.find((value,index,self) => {}): 查找,找到第一个之后就停止,返回找到的值,不会遍历所有; 是否改变原数组:N;
-
every() / some(); every((value,index,self) => {}): 1.判断数组每项是否符合条件,符合返回true,否则false; 2.在第一个false的位置停止退出遍历; some((value,index,self) => {}): 任意内容符合条件则返回true, 否则返回false;
-
arr.reduce((prev,now,index,self) => {}, initValue): 遍历累加,并返回累加后的最终值;
注意: 1.省略initValue, 第一次prev为第一个元素,now为第二个元素; 2.回调函数未return内容,第二次之后的prev值为undefined; -
arr.reduceRight((prev,now,index,self) => {}, initValue): 同reduce,遍历从右往左;
-
arr.includes(a): 查询数组内容是否包含指定内容,返回布尔值,字符串/数组均可用;
-
arr.indexOf(a): 查询数组内容是否包含指定内容,返回下标,找不到返回-1,字符串/数组均可用;
-
arr.findIndex(item => item.id === 2): 查找对象数组的下标;
-
arr.flat()扁平化数组
var newArray = arr.flat([depth]);
-`arr`:调用 `flat()` 方法的数组。
-`depth`:
可选参数,指定要扁平化的深度,默认值为 `1`,表示只扁平化一层嵌套数组;
若传入 `Infinity`,则会将数组完全扁平化,无论嵌套多少层。
-`newArray`:扁平化后的新数组,原数组不会被修改。
应用场景:
const sparseArray = [1, , [2, 3]];
const flattenedSparseArray = sparseArray.flat();
console.log(flattenedSparseArray); // 输出: [1, 2, 3]
`flat()` 方法还会移除数组中的空槽,将稀疏数组转换为连续的数组
23.arr.flatMap(): 结合了 map() 和 flat() 的功能, 先map()再执行flat()
```
const orders = [
[{ name: 'apple', price: 1 }, { name: 'banana', price: 2 }],
[{ name: 'cherry', price: 3 }]
];
const allItems = orders.flatMap(order => {
return order.map(item => ({
...item,
inStock: true
}));
});
console.log(allItems);
// 输出: [
// { name: 'apple', price: 1, inStock: true },
// { name: 'banana', price: 2, inStock: true },
// { name: 'cherry', price: 3, inStock: true }
// ]
```
24.arr.fill(): 填充数组,会修改原数组
arr.fill(value[, start[, end]])
- `value`:必需,用来填充数组元素的值。
- `start`:可选,起始索引,默认值为 0。
- `end`:可选,终止索引,默认值为数组的长度。注意,填充操作不包含该索引位置的元素。
- 该方法会修改原数组,并返回修改后的数组
const letters = ['a', 'b', 'c', 'd', 'e'];
letters.fill('x', 1, 3);
console.log(letters); // 输出: ['a', 'x', 'x', 'd', 'e']