数组常用方法

2021-04-10  本文已影响0人  my木子

一、修改器方法,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]
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]
let arr = [1, 2, 3, 7];
let bool= arr.every((item, index, array) => {
    return item > 2;
});
console.log(bool); // false
let arr = [1, 2, 3, 7];
let bool= arr.some((item, index, array) => {
    return item > 2;
});
console.log(bool); // true
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

扩展方法

let arr = [33,44,55,66,33,77,88];

let index = arr.includes(33);
console.log(index);  // true
let arr = [33,44,55,66,77,88];

let index = arr.indexOf(33);
console.log(index);  // 1
let arr = [33,44,55,66,33,77,88];

let index = arr.lastIndexOf(33); 
console.log(index);  // 4
// 字符串
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]
上一篇 下一篇

猜你喜欢

热点阅读