2017-08-11 97 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]) 
 
}