我有一個深度嵌套的物件陣列(串列)。每個物件都有一個陣列,可以是空的,也可以包含另一個物件。我需要映射它們并輸出一個結果,該結果將代表一個由每個專案名稱的值組成的字串。
結果應該是“名稱 1,名稱 2,名稱 3”。
到目前為止,我有這個,但我絕對沒有得到我需要的東西:
const list = [
{id: 1, Item: []},
{id: 2, Item: [{name: 'name1'}]},
{id: 3, Item: [{name: 'name2'}, {name: 'name3'}]},
{id: 4, Item: []}
];
const getNames = (list) => {
const list = [];
_.forEach(list, (child) => {
list.push(child.Item);
});
const filteredList = list.filter(value => JSON.stringify(value) !== '[]');
const mappedList = _.map(filteredList, (el) => {
return el.name;
});
return _.join(mappedList, ', ');
};
const result= getNames(list);
//expected output: 'name 1, name 2, name 3' (string)
有任何想法嗎?
uj5u.com熱心網友回復:
你不需要 lodash,它可以使用.reduce()和.map()
const list = [
{id: 1, Item: []},
{id: 2, Item: [{name: 'name1'}]},
{id: 3, Item: [{name: 'name2'}, {name: 'name3'}]},
{id: 4, Item: []}
];
const getNames = (arr) => {
const names = arr.reduce((acc, {Item})=>[
...acc,
...Item.map(({name})=> name)
], []);
return names.join(', ');
}
console.log(getNames(list));
關于您的代碼的一些反饋:您呼叫了沖突的物件list- 它是一個全域變數,該函式內的一個引數getNames()和一個區域范圍的變數。_.forEach迭代一個空的區域范圍的變數而不是引數。小心變數名沖突??
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/430617.html
標籤:javascript 数组 目的 多维数组 罗达什
