[英]push the array value to object
我有一個嵌套數組。 我想從數組中獲取值並推送到新的單個 object。 應該讀取 _id 作為 object 鍵和類別數組字段應該是 _id 的值
const Ll = [
{
_id: 'milk',
category: [
[
{
name: 'Alfred',
job: 'manager'
},
{
name: 'Mark',
job: 'manager'
}
]
]
},
{
_id: 'grocery',
category: [
[
{
name: 'William',
job: 'manager'
}
]
]
}
]
我想要這樣的 object,
const obj = {
milk: [
{
name: 'Alfred',
job: 'manager'
},
{
name: 'Mark',
job: 'manager'
}
],
grocery: [
{
name: 'William',
job: 'manager'
}
]
}
可以嗎 謝謝!
你可以使用Array.prototype.reduce()
方法來做到這一點。 遍歷數組並按_id
對其進行分組。
const data = [ { _id: 'milk', category: [ [ { name: 'Alfred', job: 'manager', }, ], ], }, { _id: 'grocery', category: [ [ { name: 'William', job: 'manager', }, ], ], }, { _id: 'milk', category: [ [ { name: 'Mark', job: 'manager', }, ], ], }, ]; const ret = data.reduce((prev, c) => { const p = prev; const key = c._id; p[key] = p[key]?? []; p[key].push(...c.category.flat()); return p; }, {}); console.log(ret);
ES6:
const data = [ { _id: 'milk', category: [ [ { name: 'Alfred', job: 'manager', }, ], ], }, { _id: 'grocery', category: [ [ { name: 'William', job: 'manager', }, ], ], }, { _id: 'milk', category: [ [ { name: 'Mark', job: 'manager', }, ], ], }, ]; const ret = data.reduce((prev, c) => { const p = prev; const key = c._id; p[key] = p[key] || []; p[key].push(...c.category.reduce((acc, val) => acc.concat(val), [])); return p; }, {}); console.log(ret);
您可以使用reduce
和空 object 累積
技術結合:
const data = [ { _id: "milk", category: [ [ { name: "Alfred", job: "manager", }, { name: "Mark", job: "manager", }, ], ], }, { _id: "grocery", category: [ [ { name: "William", job: "manager", }, ], ], }, ]; const res = data.reduce( (acc, { _id, category }) => ({...acc, [_id]: category.flat() }), {} ); console.log(res);
這是給你的解決方案。
const obj = {};
data.forEach(d => {
const categories = d.category.reduce((a, v) => a.concat(v), []);
obj[d._id] = obj[d._id] ? [...obj[d._id], ...categories] : [...categories];
});
console.log(obj);
const keys = [...new Set(data.map(item => item._id))];
const newObj = keys.reduce((acc, curr) => {
const value = data.filter(({ _id }) => _id === curr).map(({ category }) => {
return {
...category[0][0]
}
});
return {
...acc,
[curr]: value
}
}, {});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.