2017-05-31 53 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_img_url:'https://ttest.com/logo2.png'},{node_input_option_id:12},{card_description:'card 1 desc'},{node_input_option_id:13},{card_description:'card 2 desc'} ,{node_input_option_id:14},{card_footer:'card 1 footer'},{node_input_option_id:15},{card_footer:'card 2 footer'}],無法顯示前一個結果。 –

+0

這是屬性的問題。上面依賴於連接相同的鍵,而實際的對象看起來像一個隨機排序的數組。它的分組建築規則是什麼? –