10

JavaScriptで次のデータ構造を作成しようとしています:

d = {"foo": [3, 77, 100], "bar": [10], "baz": [99], "biff": [10]}

私の開始データ構造は、辞書のリストです。

input = [{"key": "foo", "val": 3}, {"key": "bar", "val": 10}, {"key": "foo", "val": 100}, {"key": "baz", "val": 99}, {"key": "biff", "val": 10}, {"key": "foo", "val": 77]

目的のデータ構造を生成するにはどうすればよいですか? 次のコードは、値の配列に値を追加していないようです。

var d = {}

for (var i in input) {
    var datum = input[i];
    d[datum.key] = datum.val
}
4

7 に答える 7

22
for (var i = 0; i < input.length; i++) {
    var datum = input[i];
    if (!d[datum.key]) {
        d[datum.key] = [];
    }
    d[datum.key].push(datum.val);
}

for (var i in input)参考までに、配列を反復処理するために使用しないでください。

于 2013-10-25T21:07:02.973 に答える
1

次のことを行う必要があります。

for (var i in input){
    var datuml = input[i];    
    if(!d[datuml.key]){
        d[datuml.key]=[];
    }
    d[datuml.key].push(datuml.val);
}
于 2013-10-25T21:20:41.120 に答える
0
var result = {}
input.forEach(function(keyObject){
  //Make array for key if doesn't exist
  result[keyObject.key] = result[keyObject.key] ? result[keyObject.key] : [];
  //Add value to array
  result[keyObject.key].push(keyObject.val);
});
console.log(result);
于 2013-10-25T21:15:21.073 に答える
0

あなたは1つ以上のキーを持っていますか?JSON を ArrayString に変換するようなものが必要だと思います。

このConvert JSON To Array Javascript と this How to convert JSON object to JavaScript arrayを確認してください

于 2013-10-25T21:07:03.097 に答える