在某些第三方库中,扩展了数组原型:
Array.prototype.repeat = function(value, length) {
while (length) this[--length] = value;
return this;
};
代码:
var model = {
features:[1,2,3]
};
for (var p in model.features) {
console.log(p);
}
期望值:
1
2
3
结果:
1
2
3
repeat
我的代码如何正确地确定超出普通原型的属性并跳过它们?
答案 0 :(得分:0)
根据Question中的代码,您可以使用for
或for..of
循环来迭代数组
答案 1 :(得分:0)
有许多方法可以在JavaScript中迭代数组。选择一个时,您可能需要考虑以下
Array.prototype
上的方法进行了优化,但它们仍然比循环标准慢。)根据我自己的观察,我可以看出Array.prototype.map()
是开发人员使用转换器和函数式编程范例的首选方法。
for..in
虽然不推荐使用for..in
来迭代数组,但您可以使用Object.prototype.hasOwnProperty()
执行此操作,如下面的代码段所示。
for (const p in model.features) {
if (model.features.hasOwnProperty(p)) {
console.log(model.features[p]);
}
}
结果
1
2
3
for..of
但是,您可以使用for...of
代替处理数组时建议使用的内容。
for (const feature of model.features) {
console.log(feature);
}
for
如果您不使用转换器并希望确保您的代码可以在任何浏览器上运行,那么这是您最好的选择。
for(var i = 0; i < model.features.length; i++) {
console.log(model.features[i]);
}
Array.prototype
Array.prototype
还有一些值得注意的内置方法。
Array.prototype.forEach()
arr.forEach((value, index, array) => {
});
Array.prototype.map()
arr.map((value, index, array) => {
});
答案 2 :(得分:0)
您需要检查.hasOwnProperty
请参阅此处的工作代码 - &gt; https://jsfiddle.net/xbdd6q13/2/
或者您也可以使用for..of
代替for..in
for (var p of model.features) {
console.log(p);
}