我想将一个数组的值复制到另一个数组中,但不破坏与该数组相关联的链接,换句话说,我不能只将新数组分配给这个值,因此我无法使用像slice()或concat()这样的方法。 下面是执行此操作的函数的代码:
self.updateBreadcrumbs = function (newBreadcrumbs) {
var old_length = self.breadcrumbs.length;
var new_length =newBreadcrumbs.length;
var j = new_length > old_length ? new_length: old_length;
for (var i = 0; i < j; i++) {
if(old_length < i+1){
self.breadcrumbs.push(newBreadcrumbs[i]);
continue;
}
if(new_length < i+1){
delete self.breadcrumbs[i];
continue;
}
if (self.breadcrumbs[i].title !== newBreadcrumbs[i].title) {
self.breadcrumbs[i] = newBreadcrumbs[i];
}
}
}
我的问题是,如果我从数组中删除了某些内容,那么数组的长度不会改变。
附言:如果您知道更简单的方法来解决这个问题,我完全可以接受建议。
delete
改变了数组的长度(实际上它并没有),你也没有重新计算old_length
,所以当然不会改变。 - joeytwiddleES6
的"rest语法"和Array.prototype.splice
在一行中删除和插入,以覆盖newBreadcrumbs
中的项目与self.breadcrumbs
的项目,则可以使用以下代码:newBreadcrumbs.splice(0, newBreadcrumbs.length, ...self.breadcrumbs);
- joeytwiddlevar newBreadcrumbs = self.breadcrumbs.slice(0); return newBreadcrumbs;
- joeytwiddle