2017-08-11 12 views
-1

私はこれを手で解析することができます。私はJavaScriptでそれを行う慣用的な方法に興味があります。この配列構造を反復する方法

私に混乱を招くのは、表示されるすべての例で列のキー/値の名前があることです。そして、フィールドがない[]{}で区切られています。

あなたが書くことができますES6で
[ 
    ["MMM",0.0371], 
    ["ADBE",0.0413] 
] 
+1

私は再びJS帳にあなたのイントロを開いて割れや基本的なデータ構造、特に配列対オブジェクトに関する部分を見直すことをお勧めしたいです。 –

+0

「手で解析する」とはどういう意味ですか? –

答えて

3

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

} 

これはfor..ofループとarray destructuringを使用しています。以前のバージョンのJavaScriptとの互換性が必要な場合は、コードをBabelに変更してください。

+1

@Jonasw元の質問によるとJSONは文字列です。 – 4castle

1

事実。この例は配列の配列でJavascriptです。

<!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

destructuring assignmentを使用して、各配列をキー、値のペアとして反復することができます。データは実際にJSONJSON最初

[ 
 
    ["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の頭をはるかに超えているかもしれませんが、アレイとオブジェクトの違いをはっきりと理解していないようです。 –

+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]) 
 
}

関連する問題