#javascript #arrays #object
#javascript #массивы #объект
Вопрос:
У меня есть этот массив объектов
const unitsAndRates = [
{
propertyUnitType: "store",
propertyUnitRate: "20000",
numberOfUnit: 4
},
{
propertyUnitType: "duplex",
propertyUnitRate: "20000",
numberOfUnit: 3
}
];
и мне нужно что-то вроде этого сгенерированного массива из приведенного выше.
const generated = [
{
propertyUnitType: "store1",
propertyUnitRate: "20000"
},
{
propertyUnitType: "store2",
propertyUnitRate: "20000"
},
{
propertyUnitType: "store3",
propertyUnitRate: "20000"
},
{
propertyUnitType: "store4",
propertyUnitRate: "20000"
},
{
propertyUnitType: "duplex1",
propertyUnitRate: "20000"
},
{
propertyUnitType: "duplex2",
propertyUnitRate: "20000"
},
{
propertyUnitType: "duplex3",
propertyUnitRate: "20000"
}
];
Как я могу сгенерировать результат, приведенный выше, с учетом numberOfUnit
?
Комментарии:
1. Каковы правила дублирования и что вы пробовали?
Ответ №1:
Это можно сделать с помощью Array.prototype.flatMap
.
const unitsAndRates = [
{
propertyUnitType: "store",
propertyUnitRate: "20000",
numberOfUnit: 4
},
{
propertyUnitType: "duplex",
propertyUnitRate: "20000",
numberOfUnit: 3
}
];
const result = unitsAndRates.flatMap((item) => [...Array(item.numberOfUnit).keys()].map((index) => ({
propertyUnitType: item.propertyUnitType (index 1),
propertyUnitRate: item.propertyUnitRate
})));
console.log(result);
Ответ №2:
unitsAndRates.map(item => ({
propertyUnitType: item.propertyUnitType,
propertyUnitRate: item.propertyUnitRate
}))
или
unitsAndRates.map({propertyUnitType, propertyUnitRate} => ({propertyUnitType, propertyUnitRate }))
И если вам нужно выполнить фильтрацию по numberOfUnit, попробуйте:
const filteredUnits = unitsAndRates.filter(item => item.numberOfUnit === "2000")
и тогда вы можете выполнить сопоставление
filteredUnits.map({propertyUnitType, propertyUnitRate} => ({propertyUnitType, propertyUnitRate }))