我需要創建多個物件,每個物件都必須有一個 ID。
所有這些都將在一個陣列中。
所以它看起來像這樣:
const array = [
{
id: 1,
bla: "bla"
},
{
id: 2,
bla: "bla"
},
{
id: 3,
bla: "bla"
}
]
我的問題是,有沒有辦法創建一個函式,它會回傳一個我可以放在這些 id 中的數字?
uj5u.com熱心網友回復:
您可能想要我們所說的生成器/迭代器。
生成器/迭代器是具有內部狀態的函式。
在 js 中,它是通過在“函式”旁邊添加一個“*”并使用“yield”關鍵字而不是“return”來創建的(參見https://developer.mozilla.org/en-US/docs/Web/JavaScript/參考/運算子/產量)。
當生成器被呼叫時,它會保存給定的引數并回傳一個迭代器,您可以在其上呼叫 .next() 來獲取下一個值(注意回傳一個具有“value”屬性的物件)。
function* idGenerator (startingIndex) {
while (true){
//the iterator will keep his inner state
startingIndex = 1;
yield startingIndex;
}
}
uj5u.com熱心網友回復:
function makeArrayWithId(...objects) {
return objects.map((o, i) => ({ id: i 1, ...o }))
}
const arr = makeArrayWithId(
{
bla: "bla"
},
{
bla: "bla"
},
{
bla: "bla"
},
)
console.log(arr)
它將列印:
[ { id: 1, bla: 'bla' }, { id: 2, bla: 'bla' }, { id: 3, bla: 'bla' } ]
如果你已經有一個陣列,每個物件都沒有 id,你可以像這樣將它傳遞給這個函式:
let myArr = [
{
bla: 'bla'
},
{
bla: 'bla'
},
{
bla: 'bla'
},
]
myArrr = makeArrayWithId(...myArr)
console.log(myArr)
它將列印:
[ { id: 1, bla: 'bla' }, { id: 2, bla: 'bla' }, { id: 3, bla: 'bla' } ]
uj5u.com熱心網友回復:
let array = [
{
bla: "bla"
},
{
bla: "bla"
},
{
bla: "bla"
}
]
array = array.map((item, index) => Object.assign({}, item, { id: index 1 }))
輸出:
[ { bla: 'bla', id: 1 },
{ bla: 'bla', id: 2 },
{ bla: 'bla', id: 3 } ]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/324524.html
標籤:javascript 循环
上一篇:如何讓這段C代碼更好,更易讀
