将内容从一个对象数组复制到另一个对象时,如何防止循环错误?

问题描述 投票:0回答:0

我有这个代码:

var array1 = {
  "id": "car",
  "name": "honda",
  "virtues": [{
    "price": 99
  }, {
    "size": 5
  }, {
    "condition": 8
  }, {
    "features": 3
  }]
};

var array2 = {
  'userid': '2',
  'username': 'john',
  'prefs': [{
    "price": 1
  }, {
    "condition": 0
  }]
};

calceffect = function(array) {
  array.map(x => {
    for (var key in x) {
      if (key != 'size') {
        array2.prefs.map(d => {
          for (let k in d) {
            if (k == key) {
              if (d[k] == 0) {
                d = x;
              } else {
                console.log(key + ' is already present');
              }
            } else {
              array2.prefs.push(x);
            }
          }
        });
      }
    }
  });
}

calceffect(array1.virtues);
console.log(array2.prefs);

我得到这样的输出:

[{
  price: 1
}, {
  condition: 0
}, {
  price: 99
}, {
  condition: 8
}, [circular object Object], {
  features: 3
}, [circular object Object], [circular object Object], [circular object Object], [circular object Object]]

直到今天我仍然无法理解圆形物体是什么,所以我不知道为什么要阻止这种情况发生。

有什么建议吗?

谢谢。

javascript node.js circular-reference
© www.soinside.com 2019 - 2024. All rights reserved.