JavaScript到处都有一些有趣的怪癖。考虑一下来自this awesome post的古怪现象(感谢M. Staveley的分享):

var colours = ['red', 'green', 'blue']
// is red really in the array?
console.log(colours.indexOf('red') > -1);  // outputs true.
// remove red, it's going out of fashion!
delete colours[colours.indexOf('red')];
console.log(colours.indexOf('red') > -1);  // outputs false
console.log(colours.length) // length is still three, remember it's javascript!


最后一行是令我烦恼的事情。出于我的好奇心,这个古怪的人是什么方式来获取真正的colours计数的一种优雅方法?

最佳答案

实际上,这实际上是对Javascript数组的滥用,因此,尽管有一种解决方法(使用for...in并计算名称为数字的属性的数量),但您肯定不会称其为优雅(see it in action)。

不要使用delete,也不要手动将索引分配给元素(var colors = []; colors[1000] = 'red';);并不是要使用数组。

关于javascript - 删除值时未​​设置数组-还是获取数组计数的最佳方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10218828/

10-09 23:38