javaScript Array数组对象slice/splice/some/sort/reverse
slice:切割出数组的一部分并返回,不会修改原数组
注意事项:
- 传入一个参数的时候,会从开始的地方一直到数组尾部。
- 负数表示倒数
let arr = [5, 6, 7, 8, 1, 2, 3];
console.log(arr.slice(0, 3)); // [5, 6, 7]
console.log(arr.slice(1, 4)); // [6, 7, 8]
console.log(arr.slice(-1)); // [3]
console.log(arr.slice(-3, -1)); // [1, 2]
console.log(arr.slice(-2)); // [2, 3]
let arr1 = [
{ name: 'zg', age: 18 },
{ name: 'kobe', age: 35 },
{ name: 'lucy', age: 22 },
];
console.log(arr1.slice(3, 5)); // []
console.log(arr1.slice(0));
/**结果
{name: 'zg', age: 18}
{name: 'kobe', age: 35}
{name: 'lucy', age: 22}
*/
splice:删除或修改指定位置的元素,会修改原数组
- 参数1:表示指定开始位置
- 参数2:表示要剔除掉几个数值
- 参数3:将删除的数值替换成对应的数值
let arr = [5, 6, 7, 8, 1, 2, 3];
arr.splice(0, 1, 777);
console.log([...arr]); // [777, 6, 7, 8, 1, 2, 3]
arr.splice(0, 2, 456, 456, 456, 456);
// 指定位置修改,多出的部分会直接增加上去
console.log([...arr]); // [456, 456, 456, 456, 7, 8, 1, 2, 3]
let months = ['Jan', 'March', 'April', 'June'];
// 从0开始,删掉一个
months.splice(0, 1);
console.log([...months]); // ['March', 'April', 'June']
months.splice(0, 2);
console.log([...months]); // ['June']
let arr1 = [
{ name: 'zg', age: 18 },
{ name: 'kobe', age: 35 },
{ name: 'lucy', age: 22 },
];
arr1.splice(1, 2);
console.log([...arr1]);
/**结果
{name: 'zg', age: 18}
*/
some:用于判断数组中是否有1个或1个以上符合对应的条件,条件为传入的函数的对应逻辑
let arr = [5, 6, 7, 8, 1, 2, 3];
let result = arr.some(item => {
return item > 5;
});
console.log(result); // true
result = arr.some(item => {
return item < 0;
});
console.log(result); // false
sort:排序。会改变数组内部
- 默认升序
- 根据传入的参数逻辑进行排序,当return的值大于0时,就会交换两个数值内容
正常用法
let arr = [5, 6, 7, 8, 1, 2, 3];
arr.sort();
console.log(arr); // [1, 2, 3, 5, 6, 7, 8]
let strArr = ["zg", "aa", "cs", "lucy"];
strArr.sort();
console.log(strArr); // ['aa', 'cs', 'lucy', 'zg']
涉及到对象内容的排序。可以依次根据数组中对象内容不同进行排序,下面例子依次按照:名称、年龄、身份代码进行排序
let objArr = [
{ name: 'kobe', age: 36, identifyCode: 100004 },
{ name: 'kobe', age: 36, identifyCode: 100003 },
{ name: 'kobe', age: 35, identifyCode: 100002 },
{ name: 'zg', age: 18, identifyCode: 100001 },
];
objArr.sort((a, b) => {
if(a.name != b.name) {
return a.name - b.name; // 名称字符大小排序
} else if(a.age != b.age) {
return a.age - b.age; // 年龄大小排序
} else {
return a.identifyCode - b.identifyCode; // 身份代码大小排序
}
});
console.log(objArr);
/**结果
{name: 'kobe', age: 35, identifyCode: 100002}
{name: 'kobe', age: 36, identifyCode: 100003}
{name: 'kobe', age: 36, identifyCode: 100004}
{name: 'zg', age: 18, identifyCode: 100001}
*/
reverse:将数组逆序。会改变数组内部
let arr = [1, 2, 3, 4, 5, 6, 7];
arr.reverse();
console.log(arr); // [7, 6, 5, 4, 3, 2, 1]