gpt4 book ai didi

javascript - JS : Remove itme completely from object

转载 作者:行者123 更新时间:2023-11-30 12:17:04 26 4
gpt4 key购买 nike

我无法从对象中完全删除一个 itme。我试过:

    function randomKey(obj) {
var ret;
var c = 0;
for (var key in obj)
if (Math.random() < 1/++c)
ret = key;
return ret;
}

while(aCountryNames.length > 0){
randomValue = randomKey(aCountryNames);
alert(randomValue); // 42x
delete aCountryNames[randomValue];
}

我使用了一个额外的变量来完成这个:

var i = 42;
while(i > 0){
randomValue = randomKey(aCountryNames);
alert(randomValue); // 42x
delete aCountryNames[randomValue];
i--;
}

第一个 while 以“未定义”警报结束。

对象是:

var aCountryNames = {   
Alaska: 'Alaska',
NorthWestTerritory: 'North West Territory',
Alberta: 'Alberta',
Ontario: 'Ontario',
Greenland: 'Greenland',
etc.

选择一个项目后(选择没有问题,但为了测试我使用警报),我想将它从对象中完全删除,所以我的第一个 while 循环将在没有项目剩下时完成。

提前感谢您的回答!

最佳答案

正如 Noah Freitas 所指出的,对象 没有长度 属性。

你应该替换

aCountryNames.length

对于

Object.keys(aCountryNames).length

也许你想看看 this关于计算物体长度的帖子。

编辑:

这里我把片段留给你:

var aCountryNames = {   
Alaska: 'Alaska',
NorthWestTerritory: 'North West Territory',
Alberta: 'Alberta',
Ontario: 'Ontario',
Greenland: 'Greenland'
}

function randomKey(obj) {
var ret;
var c = 0;
for (var key in obj)
if (Math.random() < 1/++c)
ret = key;
return ret;
}

while(Object.keys(aCountryNames).length > 0){
randomValue = randomKey(aCountryNames);
delete aCountryNames[randomValue];
alert(randomValue + '; there are ' + Object.keys(aCountryNames).length + ' countries left.');
}

希望对您有所帮助!

关于javascript - JS : Remove itme completely from object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32160468/

26 4 0