如何在javascript / vuejs中创建对象的副本

这个问题在这里已经有了答案:

  • 我如何正确克隆一个JavaScript对象? 54个答案

  • 您没有创建副本。 您正在将this.items的引用分配给itemsCopy数组。 因此,您稍后将对相同的数组进行变异。

    创建一个副本:

    itemsCopy = this.items.slice();
    

    数组内的每个对象都有同样的问题。 在你的循环中,创建一个对象的副本:

    var obj = Object.assign({}, itemsCopy[i]);
    obj.text = "something";
    itemsCopy[i] = obj;  //replace the old obj with the new modified one.
    

    演示:

    var items = [
      {text: 'text1', active: true},
      {text: 'text1', active: true},
      {text: 'text1', active: true}
    ];
    
    function copyAndChange() {
      var itemsCopy = []
      itemsCopy = items.slice();
      for (var i=0; i<itemsCopy.length; i++) {
        var obj = Object.assign({}, itemsCopy[i]);
        obj.text = "something";
        itemsCopy[i] = obj;  //replace the old obj with the new modified one.
        console.log('text from items: ' + items[i].text)
        console.log('text from itemsCopy: ' + itemsCopy[i].text)
      }
      return itemsCopy
    }
    
    copyAndChange();
    链接地址: http://www.djcxy.com/p/24779.html

    上一篇: how to make a copy of object in javascript/vuejs

    下一篇: How can I make a copy of an object in JavaScript?