• splice()、push()、pop()、unshift()、pop()、reverse()等数组响应式方法


    Array.prototype.push()

    语法

    array.push(element1, ..., elementN)
    

    push方法将值追加到数组中。下面的代码创建了 sports 数组,包含两个元素,然后又把两个元素添加给它。total 变量为数组的新长度值。

    var sports = ["soccer", "baseball"];
    var total = sports.push("football", "swimming");
    
    console.log(sports); 
    // ["soccer", "baseball", "football", "swimming"]
    
    console.log(total);  
    // 4
    

    合并两个数组

    var vegetables = ['parsnip', 'potato'];
    var moreVegs = ['celery', 'beetroot'];
    
    // 将第二个数组融合进第一个数组
    // 相当于 vegetables.push('celery', 'beetroot');
    Array.prototype.push.apply(vegetables, moreVegs);
    
    console.log(vegetables); 
    // ['parsnip', 'potato', 'celery', 'beetroot']
    

    Array.prototype.unshift()

    语法

    array.unshift(element1, ..., elementN)
    

    unshift 方法会在调用它的类数组对象的开始位置插入给定的参数。

    let arr = [1, 2];
    
    arr.unshift(0); // result of the call is 3, which is the new array length
    // arr is [0, 1, 2]
    
    arr.unshift(-2, -1); // the new array length is 5
    // arr is [-2, -1, 0, 1, 2]
    
    arr.unshift([-4, -3]); // the new array length is 6
    // arr is [[-4, -3], -2, -1, 0, 1, 2]
    
    arr.unshift([-7, -6], [-5]); // the new array length is 8
    // arr is [ [-7, -6], [-5], [-4, -3], -2, -1, 0, 1, 2 ]
    

    Array.prototype.pop()

    语法

    array.pop()
    

    pop 方法从一个数组中删除并返回最后一个元素。下面的代码首先创建了一个拥有四个元素的数组 myFish,然后删除掉它的最后一个元素。

    let myFish = ["angel", "clown", "mandarin", "surgeon"];
    
    let popped = myFish.pop();
    
    console.log(myFish); 
    // ["angel", "clown", "mandarin"]
    
    console.log(popped); 
    // surgeon
    

    Array.prototype.shift()

    语法

    array.shift()
    

    以下代码显示了删除其第一个元素之前和之后的myFish数组。它还显示已删除的元素:

    let myFish = ['angel', 'clown', 'mandarin', 'surgeon'];
    
    console.log('调用 shift 之前: ' + myFish);
    // "调用 shift 之前: angel,clown,mandarin,surgeon"
    
    var shifted = myFish.shift(); 
    
    console.log('调用 shift 之后: ' + myFish); 
    // "调用 shift 之后: clown,mandarin,surgeon" 
    
    console.log('被删除的元素: ' + shifted); 
    // "被删除的元素: angel"
    

    Array.prototype.splice()

    语法

    array.splice(start, deleteCount,item1, item2, ...)
    

    start

    指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数,这意味着-n是倒数第n个元素并且等价于array.length-n);如果负数的绝对值大于数组的长度,则表示开始位置为第0位。

    deleteCount

    整数,表示要移除的数组元素的个数。如果 deleteCount 是 0 或者负数,则不移除元素。这种情况下,至少应添加一个新元素。

    item1, item2, ...

    要添加进数组的元素,从start 位置开始。如果不指定,则 splice() 将只删除数组元素。

    从第 2 位开始删除 0 个元素,插入“drum”

    var myFish = ["angel", "clown", "mandarin", "sturgeon"];
    var removed = myFish.splice(2, 0, "drum");
    
    // 运算后的 myFish: ["angel", "clown", "drum", "mandarin", "sturgeon"]
    // 被删除的元素: [], 没有元素被删除
    

    从第 2 位开始删除 0 个元素,插入“drum” 和 "guitar"

    var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
    var removed = myFish.splice(2, 0, 'drum', 'guitar');
    
    // 运算后的 myFish: ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
    // 被删除的元素: [], 没有元素被删除
    

    从第 3 位开始删除 1 个元素

    var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
    var removed = myFish.splice(3, 1);
    
    // 运算后的 myFish: ["angel", "clown", "drum", "sturgeon"]
    // 被删除的元素: ["mandarin"]
    

    从第 2 位开始删除 1 个元素,插入“trumpet”

    var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
    var removed = myFish.splice(2, 1, "trumpet");
    
    // 运算后的 myFish: ["angel", "clown", "trumpet", "sturgeon"]
    // 被删除的元素: ["drum"]
    

    从第 0 位开始删除 2 个元素,插入"parrot"、"anemone"和"blue"

    var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
    var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
    
    // 运算后的 myFish: ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
    // 被删除的元素: ["angel", "clown"]
    

    从倒数第 2 位开始删除 1 个元素

    var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
    var removed = myFish.splice(-2, 1);
    
    // 运算后的 myFish: ["angel", "clown", "sturgeon"]
    // 被删除的元素: ["mandarin"]
    

    从第 2 位开始删除所有元素

    var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
    var removed = myFish.splice(2);
    
    // 运算后的 myFish: ["angel", "clown"]
    // 被删除的元素: ["mandarin", "sturgeon"]
    

    删除所有元素

    var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
    var removed = myFish.splice(0);
    
    // 运算后的 myFish: [ ]
    // 被删除的元素: ['angel', 'clown', 'mandarin', 'sturgeon']
    

    Array.prototype.sort()

    语法

    array.sort(sortfunction)
    

    sort 方法可以使用 函数表达式 方便地书写:

    var numbers = [4, 2, 5, 1, 3];
    numbers.sort(function(a, b) {
      return a - b;
    });
    console.log(numbers);
    
    也可以写成:
    var numbers = [4, 2, 5, 1, 3]; 
    numbers.sort((a, b) => a - b); 
    console.log(numbers);
    
    // [1, 2, 3, 4, 5]
    
    

    对象可以按照某个属性排序:

    var items = [
      { name: 'Edward', value: 21 },
      { name: 'Sharpe', value: 37 },
      { name: 'And', value: 45 },
      { name: 'The', value: -12 },
      { name: 'Magnetic' },
      { name: 'Zeros', value: 37 }
    ];
    
    // sort by value
    items.sort(function (a, b) {
      return (a.value - b.value)
    });
    
    // sort by name
    items.sort(function(a, b) {
      var nameA = a.name.toUpperCase(); // ignore upper and lowercase
      var nameB = b.name.toUpperCase(); // ignore upper and lowercase
      if (nameA < nameB) {
        return -1;
      }
      if (nameA > nameB) {
        return 1;
      }
    
      
    // names must be equal
    
      return 0;
    });
    

    Array.prototype.reverse()

    语法

    array.reverse()
    

    reverse 方法颠倒数组中元素的位置,改变了数组,并返回该数组的引用。

    var fruits = ["Banana", "Orange", "Apple", "Mango"];
    fruits.reverse();
    console.log(fruits)  //Mango,Apple,Orange,Banana
    

    Vue.set()

    语法

    Vue.set( target, propertyName/index, value )
    Arguments:
      {Object | Array} target
      {string | number} propertyName/index
      {any} value
    

    利用Vue.set()方法也可以使页面重新渲染

    //对象
    export default() {
      data() {
        food: {
          name: 'apple' 
        }
      }
    }
    ...
    Vue.set(food, 'price', 5);
    // is foot {name:'apple',price:5} 
    
    //数组
    export default() {
      data() {
        fruits: ['Banana', 'Orange', 'Apple', 'Mango']
      }
    }
    ...
    Vue.set(fruits, 0, 'Lemon');
    // is fruits  ['Lemon','Banana', 'Orange', 'Apple', 'Mango']
    
  • 相关阅读:
    矩形交,线段交
    P1338 末日的传说(贪心)
    P1338 末日的传说(贪心)
    P2014 选课 (依赖性背包,树上背包) U53204 【数据加强版】选课(后序遍历优化)
    P2014 选课 (依赖性背包,树上背包) U53204 【数据加强版】选课(后序遍历优化)
    P1417 烹调方案(01背包 )
    P1417 烹调方案(01背包 )
    D. Pawn(记忆化搜索)
    蓝桥杯--数位递增的数
    汉诺塔递归算法C语言
  • 原文地址:https://www.cnblogs.com/bingziweb/p/13796298.html
Copyright © 2020-2023  润新知