js数组的.相关方法

创建数组

  1. 字面量创建 var a = [1,2,3];
  2. 构造器创建 new Array === Array
    1. var a = new Array(1,2.3,5);
  3. ES6新增
    1. Array.of(12,45,1)返回所有参数值组成的数组
    2. Array from ("转化为数组的对象") 将两类对象(有length的,接口数据)转化为真正的数组,返回新数组;

改变原数组的方法

  1. arr.splice(“操作位索”,“删除个数”,“添加元素”...)添加/删除数组元素 返回被删除的项目 索引为负从后计数

var a = new Array(1,2,3,4,'李白') console.log(a);//[1, 2, 3, 4, "李白"] var b = a.splice(-2,2,'露娜','不知火舞'); console.log(b); // [4, "李白"] console.log(a); //[1, 2, 3, "露娜", "不知火舞"]

  1. arr.sort()
var a1 = [2,1,3,5,4,8,9]
a1.sort(function(a,b){
    return a-b  //小到大
    return b-a  //大到小
})
console.log(a1);
//多条件排序
 var array = [{id:10,age:2},{id:5,age:4},{id:6,age:10},{id:9,age:6},{id:2,age:8},{id:10,age:9}];
     array.sort(function(a,b){
         if(a.id === b.id){// 如果id的值相等,按照age的值降序
             return b.age - a.age
         }else{ // 如果id的值不相等,按照id的值升序
             return a.id - b.id
         }
     })
// [{"id":2,"age":8},{"id":5,"age":4},{"id":6,"age":10},{"id":9,"age":6},{"id":10,"age":9},{"id":10,"age":2}] 
  1. arr.pop()删除最后一个元素
  2. arr.shift()删除第一个元素
  3. arr.push()追加元素(从最后)
  4. arr.unshift()添加元素(从开头)
  5. arr.reverse()翻转数组
  6. arr.copyWithin(target,start,end)从 targe t开始替换 start 到 end 的元素 数组长度不变
  7. arr.fill(“填充值”,star,end)填充数组

不改变原数组的方法

  1. slice(start,end) 浅拷贝,返回新数组
  2. join(“指定分隔符默认逗号”)分隔数组返回字符串
  3. toString()数组转为以逗号连接的字符串
  4. cancat()连接数组 a.cancat(arr1,arr2,“具体值”)
  5. ES6新增 ...扩展运算符 b[1,2,...arr1,3] 功能同cancat()
  6. indexof()查找指定元素第一个位置返回索引 没有返回值为=== -1 不能识别NaN,
  7. lastIndexof()查找指定元素最后一个位置返回索引 没有返回值为=== -1 不
  8. includes(“指定元素”)新增查找是否存在指定元素 返回布尔值 可以识别NaN

遍历数组的方法

  1. arr.forEach()
let a = [1, 2, , 3]; // 最后第二个元素是空的,不会遍历(undefined、null会遍历)
let obj = {
    name: 'OBKoro1'
};
let result = a.forEach(function (value, index, array) {
    a[3] = '改变元素';
    a.push('添加到尾端,不会被遍历')
    console.log(value, 'forEach传递的第一个参数'); // 分别打印 1 ,2 ,改变元素
    console.log(this.name); // OBKoro1 打印三次 this绑定在obj对象上
    // break; // break会报错
    return value; // return只能结束本次回调 会执行下次回调
    console.log('不会执行,因为return 会执行下一次循环回调')
}, obj);
console.log(result); // 即使return了一个值,也还是返回undefined
// 回调函数也接受箭头函数写法
  1. arr.every()检测是否所有元素都符合条件 返回布尔值

[12, 5, 8, 130, 44].every(x => x >= 10); // false

  1. arr.some()检测是否有元素都符合条件 只要有一个满足就返回true并结束
  2. arr.filter()过滤,返回新数组
  3. arr.map()返回每个元素处理后组成的新数组
let a = ['1', '2', '3', '4'];
let result = a.map(function (value, index, array) {
    return value + '新数组的新元素'
});
console.log(result, a);
// ["1新数组的新元素","2新数组的新元素","3新数组的新元素","4新数组的新元素"] ["1","2","3","4"]
  1. arr.raduce()累加合并
// 数组求和 
let sum = [0, 1, 2, 3].reduce(function (a, b) {
    return a + b;
}, 0);
// 6
// 将二维数组转化为一维 将数组元素展开
let flattened = [[0, 1],[2, 3],[4, 5]].reduce(
    (a, b) => a.concat(b),
    []
);
// [0, 1, 2, 3, 4, 5]
  1. array.keys() 遍历键名
  2. array.values() 遍历键值
  3. array.entries() 遍历键名+键值

猜你喜欢

转载自blog.csdn.net/qq_44879525/article/details/92760538