Javascript 数组对象重构

Javascript 数组对象重构,javascript,Javascript,我有如下Javascript对象: 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', o

我有如下Javascript对象:

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); 
它表明-

[{ 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:'',card_description:'card 1 desc',card_footer:'card 1 footer'},{card_img_url:'',card_description:'card 2 desc',card_footer:'card 2 footer'}]


如何实现此目的?

您可以检查对象的键是否与前一个对象的键相同。如果相同,则取结果数组的下一个索引,否则为零。然后将对象指定给结果集

var data=[{card\u img\u url:'https://ttest.com/logo.png“},{card\u img\u 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'},
结果=数据.reduce(函数(最后一个,i){
返回函数(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;
返回r;
};
}(), []);
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
我想通过下面这样的for循环重新构造测试对象。您必须展示您解决问题的尝试。var value=[RowDataPacket{node\u input\u option\u id:9,node\u id:4,options:'card\u img\u url',options\u value:'',RowDataPacket{node_input_option_id:10,node_id:4,options:'card_img_url',options_value:'}];var shaym=[];for(var i=0;我不在注释中发布代码。将其移动到问题中。谢谢尼娜,它可以工作。您已经为我节省了很多时间。你好尼娜,谢谢您的上一个选项,但是如果我添加了像:var data=[{node_input_option_id:10},{card_img_url:'},{node_input_option_id:11},{card_img_url:'},{node_input_option_id:12},{card_说明:'card 1 desc},{node_input_option_id:13},{card(card(说明:'card 2 desc,{card_footer:'card 2 footer'}],它无法显示前一个结果。这是属性的问题。上面依赖于连接的相同键,而实际对象看起来像随机排序的数组。它的分组构建规则是什么?
[{ 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' } ]