2017-04-08 25 views
-2

私は以下のような配列オブジェクトを持っています。配列内のオブジェクトを反復処理する方法は?

var myArray=[{dateformat:"apr1", score:1},{dateformat:"apr2",score:2},{dateformat:"apr3",score:3}]; 

私は別の配列、例えばにDATEFORMATの値を抽出したいと思います:

var dateArray=["apr1","apr2","apr3"]; 
var score=[1,2,3]; 

私はインデックスを抽出するためにforループを使用していますが、私は値を取得することはできませんよ。

+1

* "私は値を取得することはできませんよ" * ...私たちのコードを示しています。 Stackoverflowは無料のコード作成サービスではありません。考えられるのは、あなたのコード**を修正して、期待通りの性能を発揮できないようにすることです。 – charlietfl

答えて

0

変数をハードコードしたくない場合は、Array#forEachObject.keysを使用して、それぞれのユニークなキーの値を内部に保存することができます。アレイ。

:それは問題ではありませんが、多くのキーは、あなたのオブジェクトに持っているか、以下のソリューションは、常にあなたの右の出力を返します。最初に新しい変数を宣言する必要がないことに注意してください。

var myArray = [{dateformat:"apr1", score:1},{dateformat:"apr2",score:2},{dateformat:"apr3",score:3}], 
 
    obj = {}; 
 
    
 
    myArray.forEach(v => Object.keys(v).forEach(function(c) { 
 
     (obj[c] || (obj[c] = [])).push(v[c]); 
 
    })); 
 
    
 
    console.log(obj);

0

空の配列を作成し、必要なアレイ内の各オブジェクトのプロパティ(アレイ内の各オブジェクトを表す)「要素」とプッシュESCHの引数でのforEachを使用。

var dateArray=[]; 
 
var score=[]; 
 
    
 
var myArray=[ 
 
    {dateformat:"apr1", score:1}, 
 
    {dateformat:"apr2",score:2}, 
 
    {dateformat:"apr3",score:3} 
 
]; 
 
    
 

 
myArray.forEach(function(element) { 
 
    dateArray.push(element.dateformat); 
 
    score.push(element.score); 
 
}); 
 

 
console.log(dateArray); //gives ["apr1","apr2","apr3"] 
 
console.log(score); //gives ["1","2","3"]

0

ここでは単純なループなどの答えがあります。

var dateArray = new Array(myArray.length); 
for(var i = 0; i < myArray.length; ++i) { 
     var value = myArray[i]; 
     var dateValue = value.dateformat; 
     dateArray[i] = dateValue; 
} 

あなたはmap機能を使用して同じことを達成することができます

var dateArray = myArray.map(function(value) { return value.dateformat; }); 
1

使用mapは初期配列オブジェクトを反復して、必要な項目を返すように。

var myArray=[{dateformat:"apr1", score:1},{dateformat:"apr2",score:2},{dateformat:"apr3",score:3}]; 
 

 
var dateArray = myArray.map(function(obj){return obj.dateformat;}), 
 
    score = myArray.map(function(obj){return obj.score}); 
 
    
 
console.log(dateArray); 
 
console.log(score);

0

あなたが与えられた配列の単一ループのアプローチを使用してキーを反復し、所望の配列に値をプッシュすることができました。

var myArray = [{ dateformat: "apr1", score: 1 }, { dateformat: "apr2", score: 2 }, { dateformat: "apr3", score: 3 }], 
 
    dateArray = [], 
 
    score = []; 
 

 
myArray.forEach(function (target, keys) { 
 
    return function(a) { 
 
     keys.forEach(function(k, i) { 
 
      target[i].push(a[k]); 
 
     }); 
 
    }; 
 
}([dateArray, score], ['dateformat', 'score'])); 
 

 
console.log(dateArray); 
 
console.log(score);

+0

なぜ 'reduce'を使うのですか?あなたのステップ関数は、アキュムレータ 'r'をとり、それを返すだけです。つまり、すべてのステップが同じアキュムレータを使用します(ループ内の定数です)。代わりに 'forEach'を使わないのはなぜですか? – melpomene

+0

@melpomene、右、これを閉鎖に変更しました。 –

関連する問題