2018-6-2_《JS操作数组(有味方法)》

/*
=========================================== 影响原数组,“有味”方法(9个)有: 1. splice() 向/从数组中添加/删除项目 2. sort() 数组排序 3. pop() 删除数组中最后一个元素 4. shift() 删除数组中第一个元素 5. push() 数组最后一个元素添加元素 6. unshift() 数组第一个元素添加元素 7. reserve() 数组元素反序 8. copyWithin() ES6 指定位置元素复制到指定元素 9. fill() ES6
===========================================*/ 
一. splice
// 1. 删除元素。 办法:只需splice()掉要删除的元素就行
let arr = [1, 2, 3, 4, 5, 6, 7];
let item = arr.splice(0, 3);  //从0标开始,取3个长度为截断处;欲‘截断’部分;
console.log(item);  //[1,2,3]
console.log(arr);  //“截余”部分;[4,5,6,7]

  

// 2. 删除并添加。 办法:只需添加splice()第三参数
let arr = [1, 2, 3, 4, 5, 6, 7];
let item = arr.splice(0, 3, 'foo','bar'); //splice若有第三个参数,作用是替换“被删除”的元素的项;
console.log(item); // [1,2,3]
console.log(arr);  //被影响的原数组: ['foo','bar',4,5,6,7]

  

// 3(a). 不删除只添加(加于前)。办法:只需splice()第一、第二参数为0
let arr = [1, 2, 3, 4, 5, 6, 7];
let item = arr.splice(0, 0, 'foo','bar'); // 只需splice()第一、第二参数为0
console.log(item); // "截掉"的元素为[],一个也不截掉
console.log(arr);  //['foo','bar',1,2,3,4,5,6,7]

  

//3(b). 不删除只添加。(加于后) 办法:只需splice()第一参数为-1,第二参数为0
let arr = [1, 2, 3, 4, 5, 6, 7];
let item = arr.splice(-1, 0, 'foo','bar'); //添加于最后,只需从“负标”开始
console.log(item); // []
console.log(arr); // [1,2,3,4,5,6,7,'foo','bar']

  


二.sort
// 1(a). 对数字升序排序(非数字比较会调用toString方法)
let arr = [4,7,1,2,8,3];
arr.sort(function(a,b){return a-b});
console.log(arr); //[1, 2, 3, 4, 7, 8]

  




// 1(a). 对数字降序排序(非数字比较会调用toString方法)
let arr = [4,7,1,2,8,3];
arr.sort(function(a,b){return b-a});
console.log(arr); //[8,7,4,3,2,1]

  


// 2. 多条件排序
let arr = [{id:10,age:2},{id:5,age:4},{id:6,age:10},{id:9,age:6},{id:2,age:8},{id:10,age:9}];
arr.sort(function(a,b){
  if(a.id === b.id){
    return b.age - a.age
  }else{
    return a.id - b.id
  }
});

console.log(arr);

  

// 3. 自定义排序
let arr = [{name:'apple'},{name:'banana'},{name:'banana'},{name:'apple'},{name:'banana'},{name:'apple'}];

arr.sort(function(a,b){
  if(a.name === 'apple'){
    return -1;
  }else{
    return 1;
  }
});
console.log(arr);

  

三. pop
let arr = [4,7,9];
console.log(arr.pop());  //9
console.log(arr); //[4, 7]

  


四. shift
let arr = [4,1,1,'apple', 8];
console.log(arr.shift()); // 4
console.log(arr);  //[1,1,'apple',8]

  

五. push
let arr = [1,2,3];
arr.push('fuck');
console.log(arr); //[1,2,3,'fuck']

  



六. unshift
let arr = [1,2,3];
arr.unshift('Header');
console.log(arr); //['Header', 1,2,3]

  


七.reverse
let arr = [1,2,3];
console.log(arr.reverse());  //[3,2,1]

let arr_1 = ['a','b','c'];
console.log(arr_1.reverse()); //['c','b','a']

  



八. copyWithin
let arr = [0,1,2,3,4,5,6,7,8,9];
arr.copyWithin(9, 1, 3);
console.log(arr);

let arr = [1,2,3,'four',5,6,7];
arr.copyWithin(0, 3,4);
console.log(arr);

  

 

九. fill

let arr = ['apple','banana','orange'];
console.log(arr.fill('haha')); //['haha','haha','haha']

let arr_1 = ['apple','banana','orange','honeymelon'];
console.log(arr_1.fill('0', 1,3)); //['apple','0','0','honeymelon']

    

原文地址:https://www.cnblogs.com/beesky520/p/9124834.html