這個問題在這里已經有了答案: 使用 map 函式在 JavaScript 中創建關聯陣列 3 個答案 1 小時前關閉。
假設我有一個陣列:
const array = [
{
name: "Name 1",
numbers: 3
},
{
name: "Name 2",
numbers: 2
},
{
name: "Name 3",
numbers: 3
}
]
我希望每個具有數字值的物件都乘以它的狀態。想要這個:
// Expected Output
const array2 = [
{
name: "Name 1"
},
{
name: "Name 1"
},
{
name: "Name 1"
},
{
name: "Name 2"
},
{
name: "Name 2"
},
{
name: "Name 3"
},
{
name: "Name 3"
},
{
name: "Name 3"
}
]
在這里,每個物件都乘以它的數值我該怎么做?
uj5u.com熱心網友回復:
你可以做:
const array = [{name: "Name 1",numbers: 3},{name: "Name 2",numbers: 2},{name: "Name 3",numbers: 3}]
const result = array.map(({ name, numbers }) =>
[...Array(numbers)].map(_ => ({ name }))).flat()
console.log(result)
uj5u.com熱心網友回復:
const array = [
{
name: "Name 1",
numbers: 3
},
{
name: "Name 2",
numbers: 2
},
{
name: "Name 3",
numbers: 3
}
]
function splitArray(arr) {
let newArr = [], number = -1;
for (let item of arr) {
number = item.numbers;
while (number--) {
newArr.push(item.name);
}
}
return newArr
}
console.log( splitArray(array) );
uj5u.com熱心網友回復:
首先回圈陣列項并獲取數字并回圈其中的數字。
let newArray = [];
for(i=0; i<array.length; i ){
//get item number
var numberCount = array[i].numbers;
for(j=0; j<numberCount.length; j ){
newArray.push(array[i].name);
}
}
uj5u.com熱心網友回復:
const array = [
{
name: "Name 1",
numbers: 3
},
{
name: "Name 2",
numbers: 2
},
{
name: "Name 3",
numbers: 3
}
]
const array2 = array.reduce(
(previousValue, currentValue) => {
for (let i = 0; i < currentValue.numbers; i ) {
previousValue.push({ name: currentValue.name });
}
return previousValue
},
[]
)
console.log(array2)
uj5u.com熱心網友回復:
用來reduce節省記憶體~
const array = [
{
name: "Name 1",
numbers: 3
},
{
name: "Name 2",
numbers: 2
},
{
name: "Name 3",
numbers: 3
}
]
const array2 = array.reduce((acc, curr, index) => {
const times = curr.numbers
const name = { name: curr.name }
for(let i = 0; i < times; i ){
acc.push(name)
}
return acc
}, [])
console.log(array2)
uj5u.com熱心網友回復:
map()和for():
const array = [
{
name: "Name 1",
numbers: 3
},
{
name: "Name 2",
numbers: 2
},
{
name: "Name 3",
numbers: 3
}
]
const arr = array.map(el => {
let elAr = []
for(let i=0; i<el.numbers; i ){
elAr = [...elAr, {name: el.name}]
}
return elAr
})
const result = arr.flat()
console.log(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/478469.html
標籤:javascript 数组 排序
