我有一个名为products.original的(子)对象。

然后将其提取到名为productArray的新对象中:

var productArray = [];

productArray = products.original;

/*some calculations here*/

//sort the object by lowest score
productArray.sort(function(a, b) {return a.score - b.score;});

最后,我将productArray中的前三个单元格提取到第三个对象resultArray中:
var resultArray= [];
resultArray = productArray.splice(0,3);

令我惊讶的是,这将products.original的长度减少了3(拼接)。为什么?我该怎么做呢?提前致谢。

最佳答案

您没有复制数组,而只是复制了对其的引用。因此,所有操作仍将在原始对象上执行。
对于真正的克隆,请使用slice

 productArray = products.original.slice(0);

10-04 19:27