2017-05-31 21 views
-2

私はこのようなJavaScriptオブジェクトを有する:Arrayオブジェクトの再構築

var value=[ RowDataPacket {options: 'card_img_url',options_value: 'https://ttest.com/logo.png' },RowDataPacket {options: 'card_img_url', options_value: 'https://ttest.com/logo2.png' },RowDataPacket {options: 'card_description', options_value: 'card 1 desc ' },RowDataPacket { options: 'card_description',options_value: 'card 2 desc' },RowDataPacket { 
options: 'card_footer',options_value: 'card 1 footer' },RowDataPacket { 
options: 'card_footer', options_value: 'card 2 footer' }]; 

var shaym = [];    
for(var i=0; i<value.length; i++){ 
var itemoptions = value[i].options; 
var itemoptionsval = value[i].options_value;    
var temp = {}; 
temp[itemoptions] = itemoptionsval; 
shaym.push(temp); 

}

console.log(shaym); 

それが示す -

[{ card_img_url: 'https://ttest.com/logo.png' },{ card_img_url: 'https://ttest.com/logo2.png' },{ card_description: 'card 1 desc ' },{ card_description: 'card 2 desc' },{ card_footer: 'card 1 footer' },{ card_footer: 'card 2 footer' } ] 

上記コードを形成する私はこのタイプのオブジェクトをしたい:[ を{card_img_url: 'https://ttest.com/logo.png'、card_description: 'card 1 desc'、card_footer: 'card 1 footer'}、{c ard_img_url: 'https://ttest.com/logo2.png'、card_description: 'card 2 desc'、card_footer: 'card 2 footer'}]

どうすればいいですか?

+0

? – hindmost

+0

以下のようなforループを通してテストオブジェクトを再構成したいと思います。 –

+0

問題を解決しようとする試みを示す必要があります。 – hindmost

答えて

2

オブジェクトのキーが前のオブジェクトのキーと同じかどうかを確認できます。同じ場合は、結果配列の次のインデックスを取得します。それ以外の場合はゼロです。次に、オブジェクトを結果セットに割り当てます。あなたがこれまでに試してみました何

var data = [{ card_img_url: 'https://ttest.com/logo.png' }, { card_img_url: 'https://ttest.com/logo2.png' }, { card_description: 'card 1 desc ' }, { card_description: 'card 2 desc' }, { card_footer: 'card 1 footer' }, { card_footer: 'card 2 footer' }], 
 
    result = data.reduce(function (last, i) { 
 
     return function (r, a) { 
 
      var k = Object.keys(a)[0]; 
 
      i = k === last ? i + 1 : 0; 
 
      r[i] = r[i] || {}; 
 
      r[i][k] = a[k]; 
 
      last = k; 
 
      return r; 
 
     }; 
 
    }(), []); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

ありがとうニーナ、それは動作します。あなたは私の多くの時間を節約しています。 –

+0

こんにちはニナ、以前のおかげでありがとうございますが、var data = [{node_input_option_id:10}、{card_img_url: 'https://ttest.com/logo.png'}、{node_input_option_id:11}のようなオブジェクトを追加すると、 、{card_description: 'card 1 desc'}、{node_input_option_id:13}、{card_description: 'card 2 desc'} {card_img_url: 'https://ttest.com/logo2.png'}、{node_input_option_id:12} {node_input_option_id:14}、{card_footer: 'card 1 footer'}、{node_input_option_id:15}、{card_footer: 'card 2 footer'}]のように、結果を前のものとして表示することはできません。 –

+0

これはプロパティの問題です。上記のものは接続された同じキーに依存しますが、実際のオブジェクトはランダムソートされた配列のように見えます。それをグループ化するビルルールは何ですか? –

関連する問題