Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迭代哈希数组的最佳方法javascript_Javascript - Fatal编程技术网

迭代哈希数组的最佳方法javascript

迭代哈希数组的最佳方法javascript,javascript,Javascript,如果我有一个散列数组,那么迭代的最佳方式是什么 var a = [{"a": "1"}, {"b": "2"}, {"c": "3"}] for(var i in a) { console.log(a[i]) //prints each hash console.log(i) //prints the index } 如果我想得到a、b、c或1、2、3,最好的方法是什么 谢谢ECMAScript 6中提出了for of循环 for (obj of a){ var key

如果我有一个散列数组,那么迭代的最佳方式是什么

var a = [{"a": "1"}, {"b": "2"}, {"c": "3"}]

for(var i in a) {
  console.log(a[i]) //prints each hash
  console.log(i)    //prints the index
}
如果我想得到a、b、c或1、2、3,最好的方法是什么


谢谢

ECMAScript 6中提出了for of循环

for (obj of a){
    var keys = Object.keys(obj) // if you don't know the keys
    var value = obj[keys[0]] //in case your object has only one key
}
这项功能出现在Firefox31中,它与Chrome38一起提供。IE没有实现它。不知道其他浏览器

或者

a.forEach(function(obj){
    var keys = Object.keys(obj) // if you don't know the keys
    var value = obj[keys[0]] //in case your object has only one key
});

ECMAScript 6中提出了for-of循环

for (obj of a){
    var keys = Object.keys(obj) // if you don't know the keys
    var value = obj[keys[0]] //in case your object has only one key
}
这项功能出现在Firefox31中,它与Chrome38一起提供。IE没有实现它。不知道其他浏览器

或者

a.forEach(function(obj){
    var keys = Object.keys(obj) // if you don't know the keys
    var value = obj[keys[0]] //in case your object has only one key
});
大概是这样的:

变量a=[{ a:1 }, { b:2 }, { c:3 }] var键=[]; var值=[]; 对于var i=0;i 变量a=[{ a:1 }, { b:2 }, { c:3 }] var键=[]; var值=[]; 对于var i=0;i千万不要在Javascript中用for var i迭代数组,因为这会迭代数组的所有可枚举属性,而这些属性可能包含比数组元素更多的项。请修复数据结构。它应该是:var a={a:1,b:2,c:3},然后您可以使用Object.keysa获取键,然后使用[key]获取任何值。@AxelAmthor:[{a:1},{b:2},{c:3}是非常有效的JavaScript。对象文字中的键可以是标识符名称、字符串或数字。@AxelAmthor:噢,你把它们搞混了!它们看起来很相似,但语法不同。例如,JSON没有任何函数语法。让我介绍你去看报纸。如您所见,PropertyName可以是标识符名称(例如foo)、StringLiteral(例如“foo”或foo)或NumericLiteral(例如42)。@AxelAmthor:{unknownprop:value}将是无效的JSON,但却是有效的JS对象文字。是的,在这种情况下,works对我来说是有效的,因为无效的JavaScript会引发语法错误。您永远不应该在JavaScript中使用for var i来迭代数组,因为它会迭代数组的所有可枚举属性,其中可能包含比数组元素更多的项。请修复您的数据结构。它应该是:var a={a:1,b:2,c:3},然后您可以使用Object.keysa获取键,然后使用[key]获取任何值。@AxelAmthor:[{a:1},{b:2},{c:3}是非常有效的JavaScript。对象文字中的键可以是标识符名称、字符串或数字。@AxelAmthor:噢,你把它们搞混了!它们看起来很相似,但语法不同。例如,JSON没有任何函数语法。让我介绍你去看报纸。如您所见,PropertyName可以是标识符名称(例如foo)、StringLiteral(例如“foo”或foo)或NumericLiteral(例如42)。@AxelAmthor:{unknownprop:value}将是无效的JSON,但却是有效的JS对象文字。是的,在这个上下文中,works对我来说意味着有效,因为无效的JavaScript会引发语法错误。那么对于IE,有其他方法吗?对于IE,有其他方法吗?