假设我们有一个对象
var obj = { name:'Alex', password:'12345' };
我知道我可以获得一系列对象的密钥,如下所示:
var arr = [];
for(i in obj) { arr.push(i) }; // arr is equal to [name, password]
或
var arr = Object.keys(obj); // arr is equal to [name, password]
但今天我看到了这段代码:
var arr = [], i = 0;
for (arr[i++] in obj); // arr is also equal to [name, password]
这对我没有意义......我对JS
很新。有人可以解释它是如何工作的吗?
答案 0 :(得分:3)
这真是一段聪明的代码。
var arr = [], i = 0;
for (arr[i++] in obj);
你知道for .. in
循环中会发生什么吗?请遵循:
for (a in obj) {
// every loop, a will have one of the key right?
}
从技术上讲,这意味着每个循环:
loop 1:
a = obj's key 1.
loop 2:
a = obj's key 2.
// and so on...
现在,这里arr
是一个数组。我们i
的价值为0
。
loop 1:
a[i++] = obj's key 1. // is same as
a[0] = obj's key 1 and increment i
// and so on...
答案 1 :(得分:1)
for in in work:
for(a in b){//copy the [first,second...] key to a;
alert(a);
}
alert(a);//a will be the last key
现在您可以使用它来存储密钥:
for(a[i++] in obj){
//does sth like:increase i, copy the first key of obj to a[i], then loop
答案 2 :(得分:0)
for..in
循环将数组的原子值分配给我们正在使用的变量。
在您的情况下,它是array
元素,即key
中object
的{{1}}的引用,存储为array
keys
。
以下代码段将为您解答
var obj = { name:'Alex', password:'12345' };
var arr = [], i = 0;
for (arr[i++] in obj){
//now arr[i - 1] is assigned with key in obj
console.log(arr[i-1]); //gives the key
};