我正在玩一些javascript,并发现(至少对我来说)通过foreach循环处理多维数组时的奇怪行为.所以我有这段代码:
<script type="text/javascript">
var arr = [['a', 'b'], ['c','d']];
var first='';
for (var singleArray in arr) {
first += ' ' + singleArray[0] + ' ' + singleArray[1];
}
var second = '';
for (var i=0;i<arr.length; i++) {
second += ' ' + arr[i][0] + ' ' + arr[i][1];
}
console.log('First: ', first);
console.log('Second: ', second);
</script>
Run Code Online (Sandbox Code Playgroud)
输出是:
First: 0 undefined 1 undefined
Second: a b c d
Run Code Online (Sandbox Code Playgroud)
我希望第一和第二将是相同的.你能解释一下我错过了什么吗?
注意:请不要建议通过jQuery或其他方式迭代数组.我没有编码麻烦,我只是对这种特殊情况感到好奇.谢谢!
埃里克·米克尔森指出了一些好点,但总结如此.
for (... in ...) 循环迭代对象属性array是Javascript中的一个对象,因此您可以使用它迭代一个数组.但它会慢一些,一般不推荐(看看为什么会这样)for (... in ...)循环来解决如下:
var third = '';
for (var arrayIndex in arr) {
third += ' ' + arr[arrayIndex][0] + ' ' + arr[arrayIndex][1];
}
Run Code Online (Sandbox Code Playgroud)
在关联数组示例中,for (... in ...)循环将非常方便:
var person = [];
person["id"] = 1;
person["born"] = 2009;
person["favourite_meal"] = "chicken";
var fourth = '';
for (var arrayIndex in person) {
fourth += ' ' + person[arrayIndex];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28172 次 |
| 最近记录: |