javascript - 从中删除元素后javascript数组的长度不会改变

标签 javascript arrays

我正在尝试将一个数组值复制到另一个数组中,但在不破坏与该数组关联的链接的情况下换句话说,我不能只将新数组分配给该值,这就是为什么我不能使用像 slice() 或连接()。 这是执行该操作的函数代码:

 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];
                }

            }
        }

我的问题是,当我从数组中删除某些内容时,数组的长度没有改变。

P.S 如果你知道任何更简单的方法来做到这一点,我完全愿意接受建议。

最佳答案

Length of an Array can never change by deleting elements in it.

不过可以用splice改变 例如。

var arr=[1,2,3,4,5]; //length 5
arr.splice(0,1); //length 4

与普遍看法不同,delete 运算符与直接释放内存无关。 delete 仅对对象的属性有效。对数组长度没有影响

The splice() method changes the content of an array by removing existing elements and/or adding new elements.

更多关于 Splice

关于javascript - 从中删除元素后javascript数组的长度不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35296768/

相关文章:

javascript - 如何使用 Javascript 移除 Rails 按钮上的焦点?

arrays - Matlab 中的矢量化范围检查

arrays - 将 for 循环的输出存储到数组或变量中

Java:找不到符号(Array 类)

javascript - 使用 Javascript 搜索数组中的项目

javascript - 使用 Javascript 的图像加载触发器

javascript - 字体系列 iFrame 正文

ruby - 使用 zip 合并多个数组

c# - 从 C# 将数组发送到 php

javascript - jquery 多重延迟链接