我将如何减少这个数组,以便每个对象中的对象被合并 javascript 但不知道键值名称
Posted
技术标签:
【中文标题】我将如何减少这个数组,以便每个对象中的对象被合并 javascript 但不知道键值名称【英文标题】:How would I reduce this array so the objects in each are merged javascript but dont know key value names 【发布时间】:2021-05-31 15:08:43 【问题描述】:我在一个数组中有一个数组,我想减少子数组,使它们成为其中的一个对象。这是生成数组的代码
const final = data.formEntryData.map((item) =>
//console.log(Object.keys(item.data));
let key = Object.values(item.data);
let test = data.hmm.map((array) =>
//console.log(array.arrayOrder);
return [array.name]: key[array.arrayOrder] ;
);
return test;
);
这是数组中的数组
[
[
'Product Title Test': 'fdsafa' ,
'Product Description': 'ffdsafa' ,
'Product Image': 'fdasf' ,
'Product Price': undefined ,
'Live on Website Test two Three': undefined
],
[
'Product Title Test': 'Roasted Beans' ,
'Product Description': 'For the Squire' ,
'Product Image': 'http://image.com' ,
'Product Price': undefined ,
'Live on Website Test two Three': undefined
],
[
'Product Title Test': 'Shoes' ,
'Product Description': 'Worn' ,
'Product Image': 'google.com' ,
'Product Price': '100' ,
'Live on Website Test two Three': undefined
],
[
'Product Title Test': 'fdsajkl' ,
'Product Description': 'klfdlsk' ,
'Product Image': 'flkdsjl' ,
'Product Price': 'flskj' ,
'Live on Website Test two Three': 'lkjfsdlk'
],
[
'Product Title Test': 'shoes' ,
'Product Description': 'very good' ,
'Product Image': 'image.com' ,
'Product Price': '20' ,
'Live on Website Test two Three': 'yes'
],
[
'Product Title Test': 'fdsaf' ,
'Product Description': 'fdsa' ,
'Product Image': 'fdsa' ,
'Product Price': 'fdsa' ,
'Live on Website Test two Three': 'fdsa'
],
[
'Product Title Test': 'fdskj' ,
'Product Description': '291898868491092489' ,
'Product Image': 'fsdk' ,
'Product Price': '291898998629859848' ,
'Live on Website Test two Three': 'fsd;lk'
],
[
'Product Title Test': 'fdsfa' ,
'Product Description': 'fdsaf' ,
'Product Image': 'fdsafa' ,
'Product Price': 'fdsaf' ,
'Live on Website Test two Three': 'fdasf'
],
[
'Product Title Test': 'ds' ,
'Product Description': 'fdsa' ,
'Product Image': 'fdsa' ,
'Product Price': 'fdsa' ,
'Live on Website Test two Three': 'fdsa'
],
[
'Product Title Test': 'fdsfds' ,
'Product Description': 'fdsfafds' ,
'Product Image': 'fdsafs' ,
'Product Price': 'fdsaf' ,
'Live on Website Test two Three': 'fdsaf'
],
[
'Product Title Test': 'fdsfds' ,
'Product Description': 'fdsfafds' ,
'Product Image': 'fdsafs' ,
'Product Price': 'fdsaf' ,
'Live on Website Test two Three': 'fdsaf'
],
[
'Product Title Test': 'fdsaf' ,
'Product Description': 'fdsafs' ,
'Product Image': 'fdasfd' ,
'Product Price': 'fdasfdsa' ,
'Live on Website Test two Three': 'fdasfd'
]
]
我想merge the subarrays
所以一个看起来像这样
[
[...],
[
'Product Title Test': 'fdsaf',
'Product Description': 'fdsafs',
'Product Image': 'fdasfd',
'Product Price': 'fdasfdsa',
'Live on Website Test two Three': 'fdasfd'
]
,
[...]
]
我看过这样的reduce
var arr = [key:"11", value:"1100",key:"22", value:"2200"];
var object = final.reduce(
(obj, item,) => Object.assign(obj, [item.key]: item.value ), );
console.log(object)
但是我不知道 item.key
和 .item.value
的名称,因为它们是在 map 函数中派生的。
任何帮助都会很棒。谢谢!
【问题讨论】:
请更新您的问题以使用更少的输入数据,但给我们一个完整的匹配输出。例如,输出中的 [...] 数组是什么?对我来说,问题的输入和输出看起来是一样的,所以我不知道你在做什么。 【参考方案1】:鉴于您提供的数组,您可以使用以下函数将嵌套数组合并为对象,该函数使用Object.entries
访问每个对象的属性。
function mergeInner(outer)
return outer.map(inner =>
inner.reduce((merged, obj) =>
Object.entries(obj).forEach(([k, v]) =>
merged[k] = v;
);
return merged;
, )
);
产生:
[
'Product Title Test': 'fdsafa',
'Product Description': 'ffdsafa',
'Product Image': 'fdasf',
'Product Price': undefined,
'Live on Website Test two Three': undefined
,
'Product Title Test': 'Roasted Beans',
'Product Description': 'For the Squire',
'Product Image': 'http://image.com',
'Product Price': undefined,
'Live on Website Test two Three': undefined
,
...
【讨论】:
以上是关于我将如何减少这个数组,以便每个对象中的对象被合并 javascript 但不知道键值名称的主要内容,如果未能解决你的问题,请参考以下文章
如何将数组内的对象和每个对象相乘,获取一个或多个键并减少它们的值?
如何将 Spark/Scala RDD 合并/加入到 List 中,以便 RDD 中的每个值与每个 List 项一起获得一个新行