gpt4 book ai didi

javascript - Object, Object 和 [1 : Object, 2 : Object]? 有什么区别

转载 作者:数据小太阳 更新时间:2023-10-29 06:11:03 26 4
gpt4 key购买 nike

我只是在删除数组中的对象时偶然发现了这一点。

代码如下:

friends = [];

friends.push(
{
a: 'Nexus',
b: 'Muffin'
},
{
a: 'Turkey',
b: 'MonkMyster'
}
)

console.log(friends);

for(i in friends){
if(friends[i].a == 'Nexus'){
delete friends[i];
friends.push({
a: 'test',
b: 'data'
});
}
}

console.log(friends);

发布于 jsfiddle

基本上,为什么我的第一个console.log of friends 输出:[对象,对象]

但是,当在循环中删除该对象然后将新对象添加到数组时,它会记录:

[1:对象,2:对象]

1:, 2: 到底是什么意思(显然是为每个对象关联),但我想知道为什么在 friends 第一次登录后它不存在?我的 friend 数组中的对象符号是否错误?我觉得我创建的初始 friends 数组有误,而 JavaScript 解析器正在纠正我?

最佳答案

因为您删除了第一个项目(没有重新索引)并推送了一个新项目。

最初,您有一个数组,其中一个对象位于第 0 个位置,另一个对象位于第 1 个位置。

更改后,您有一个数组,第一个位置是一个对象,第二个是另一个对象。

因此,控制台只想显示第一个条目位于第 1 个位置,而不是第 0 个位置。

每个控制台可能会以不同的方式执行此操作,例如在我得到的 Firefox 上

Array [ <1 empty slot>, Object, Object ]

控制台只是一个调试工具,你可以忽略那些语法。你没有做错任何事。

但是,使用稀疏数组可能有点奇怪。您可以考虑重新索引数组而不是仅仅删除属性:

delete array[position];    // Just remove
array.splice(position, 1); // Remove and reindex

关于javascript - Object, Object 和 [1 : Object, 2 : Object]? 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31104935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com