我想從物件陣列中提取相似的值并用它創建一個新陣列,但格式不同。所以我能夠做到,但我認為代碼有點冗長。肯定會有更少的代碼來做到這一點。所以任何人都知道任何其他方式來做到這一點,也許是一種正確的方式來做到這一點?提前致謝。
const data = [
{
id: 1,
type: 'easy',
name: 'type 1',
class: 12
},
{
id: 2,
type: 'easy',
name: 'type 2',
class: 10
},
{
id: 3,
type: 'medium',
name: 'type 3',
class: 12
},
{
id: 4,
type: 'hard',
name: 'type 4',
class: 10
},
{
id: 5,
type: 'medium',
name: 'type 5',
class: 10
},
{
id: 6,
type: 'easy',
name: 'type 2',
class: 10
},
{
id: 7,
type: 'medium',
name: 'type 3',
class: 12
},
{
id: 8,
type: 'hard',
name: 'type 4',
class: 10
},
{
id: 9,
type: 'medium',
name: 'type 5',
class: 10
},
{
id: 10,
type: 'hard',
name: 'type 4',
class: 10
},
]
const dataNeeded = [];
data.forEach(dataItem => {
if(dataNeeded.length) {
const isExist = dataNeeded.find(dataNeededItem => dataNeededItem.type === dataItem.type);
if(isExist) {
dataNeeded.forEach((dataNeededItem, index) => {
if(dataNeededItem.type === dataItem.type) {
dataNeeded[index].tests.push(dataItem)
}
})
} else {
dataNeeded.push({
type: dataItem.type,
tests: [dataItem]
})
}
} else {
dataNeeded.push({
type: dataItem.type,
tests: [dataItem]
})
}
})
console.log(dataNeeded);
uj5u.com熱心網友回復:
你可以很容易地做同樣的事情,只需首先使用 aMap然后將該映射轉換為陣列。
const data=[{id:1,type:'easy',name:'type 1',class:12},{id:2,type:'easy',name:'type 2',class:10},{id:3,type:'medium',name:'type 3',class:12},{id:4,type:'hard',name:'type 4',class:10},{id:5,type:'medium',name:'type 5',class:10},{id:6,type:'easy',name:'type 2',class:10},{id:7,type:'medium',name:'type 3',class:12},{id:8,type:'hard',name:'type 4',class:10},{id:9,type:'medium',name:'type 5',class:10},{id:10,type:'hard',name:'type 4',class:10}];
const map = new Map();
data.forEach((datum) => {
// add to map if it doesn't exist yet
if (!map.has(datum.type)) map.set(datum.type, []);
// push to the right type
map.get(datum.type).push(datum);
});
// transform map into array
const dataNeeded = Array.from(map).map(([type, tests]) => ({ type, tests }));
console.log(dataNeeded);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/527365.html
標籤:javascript反应数组目的javascript 对象
上一篇:滿足條件時如何替換陣列物件
