2017-08-11 112 views
-1

我可以手工解析这个。我对在JavaScript中使用它的惯用方式感兴趣。如何遍历这个数组结构

让我感到困惑的是,我看到的所有示例都有一个列的键/值名称。而且,该字段由{}分开,不[]

[ 
    ["MMM",0.0371], 
    ["ADBE",0.0413] 
] 
+1

我建议再次开裂打开你介绍给JS书和审查有关基本的数据结构,尤其是数组与对象的部分。 – 2017-08-11 16:14:16

+0

你是什么意思的“手工解析”? – 2017-08-11 16:19:46

回答

3

在ES6你可以写:

for (const [key, value] of JSON.parse(str)) { 

} 

它使用array destructuringfor..of循环。如果您需要与较旧版本的JavaScript兼容,请将您的代码用Babel进行编码。

+1

@Jonasw原来的问题说这是JSON,这是一个字符串。 – 4castle

1

如果其实。这个例子是Javascript中的一个数组Array。

<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p>Access an array value of a JSON object.</p> 
 

 
<p id="demo"></p> 
 

 
<script> 
 

 
var myObj, x; 
 
myObj = [ 
 
    ["MMM",0.0371], 
 
    ["ADBE",0.0413] 
 
] 
 
; 
 
x = myObj[0][0]; 
 
document.getElementById("demo").innerHTML = x; 
 

 
</script> 
 

 
</body> 
 
</html>

0

在< ES6你可以写:

var arr = /* your array */; 
for(var i = 0; i < arr.length; i++){ 
    var key = arr[i][0], 
     value = arr[i][1]; 

    // do things with `key` and `value` 
} 
1

您可以使用forEach方法

var arr = [ 
 
    ["MMM",0.0371], 
 
    ["ADBE",0.0413] 
 
] 
 

 
arr.forEach(function(v1){ 
 
    v1.forEach(function(v2){ 
 
    console.log(v2) 
 
    }) 
 
})

+1

注意:'.forEach'不是一个“迭代器”。 [This](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators#Iterators)是一个迭代器。 –

+0

对。更改了答案 – Aleeeeee

1

您可以使用解构赋值将每个数组迭代为键值对。如果数据实际上是JSON而不是JSON第一

[ 
 
    ["MMM", 0.0371], 
 
    ["ADBE", 0.0413] 
 
] 
 
.forEach(([key, value]) => { 
 
    console.log(key, value) 
 
})

JSON.parse('[["MMM", 0.0371],["ADBE", 0.0413]]') 
 
.forEach(([key, value]) => { 
 
    console.log(key, value) 
 
})

+0

这可能稍微超过了OP的头,他似乎没有清楚地理解数组和对象之间的区别。 – 2017-08-11 16:17:58

+0

@torazaburo可能。 OP现在有能力从提供的答案中学习。希望澄清与数组(或对象)的明显单个元素相关的语法'[key,value]'被称为解构赋值。 – guest271314

0

一个JavaScript对象调用JSON.parse()使用ES5这可能与浏览器的不一致性,你可以在你最好的选择使用for循环或foreach。同样地图,过滤,减少取决于你想要做什么。

小提琴

var arr = [ 
 
    ["MMM",0.0371], 
 
    ["ADBE",0.0413] 
 
] 
 

 

 
arr.forEach(function (el) { 
 
    console.log(el[0]) 
 
    console.log(el[1]) 
 
}) 
 

 

 
// This will convert it to key value pairs 
 
var keyvaluearr = arr.map(function (el) { 
 
    return { 
 
    name: el[0], 
 
    value: el[1] 
 
    } 
 
}) 
 

 
console.log(keyvaluearr) 
 

 
for(var i = 0; i < arr.length; i++) { 
 
    var el = arr[i] 
 
    console.log(el[0]) 
 
    console.log(el[1]) 
 
}