吃完晚饭休息, 随便发点东西
之前半夜无聊发了点东西, 关于如何优雅地遍历对象 /t/456374
楼下说使用 for...in 遍历对象的 key
然而 for...in 的前提是, 你需要保证 Array 的原型没有被改变过.
为啥? 因为 for...in 会遍历所指定对象全部 enumerable, 如果说你使用的某个库重写了 Array 的原型, 那么遍历的结果就会很奇怪了, 比如说
Array.prototype.val = 123;
obj = {1: 'a', 2: 'b'}
for (const key in Object.keys(obj)) {
console.log(key);
}
上面代码的结果是 0, 1, val, 所以使用 for...in 必须要加 hasOwnProperty.
不然就乖乖用 forEach.
多说一句, 正常情况自己是不会重写 Array 的原型的, 但是你不能保证你用的第三方库没使用这种黑魔法.
再多说一句, 如果重写某个非 enumerable 的属性, 那么该属性还是 enumerable 的, 如 Array.forEach = something, for...in 还是无法遍历的.