JavaScript创建长度为n的对象数组

时间:2019-09-26 16:16:41

标签: javascript

是否有一个直线可以创建长度为n的对象数组?

const arr = [
    { first_name: '', last_name: '' },
    { first_name: '', last_name: '' },
    { first_name: '', last_name: '' },
]

我在下面尝试过,但是得到SyntaxError: unexpected token: ':'

const arr = [...Array(3).map(x => { first_name: '', last_name: '' })]

3 个答案:

答案 0 :(得分:2)

每当您要从箭头函数返回对象时,都需要用()来包装返回值,而您需要包装(),否则它将作为函数体的开始,

console.log([...Array(3).map(x => ({ first_name: '', last_name: '' }))])

现在您看到错误消失了,但是为什么值未定义?因为地图不会在空插槽上循环,所以您需要使用填充

console.log([...Array(3).fill(0).map(x => ({ first_name: '', last_name: '' }))])

或者您可以使用Array.from

let arr = Array.from({ length: 3 } , () => ({ first_name: '', last_name: '' }))

console.log(arr)

答案 1 :(得分:1)

您只需要将返回的对象包装在()中,但也可以使用Array.from方法instad。

const array = Array.from(Array(3), () => ({ first_name: '', last_name: '' }))
console.log(array)

答案 2 :(得分:1)

它不被视为对象,您需要将对象包装在()中,并且需要使用fill()来使地图起作用。

const arr = [...Array(3).fill().map(x => ({ first_name: '', last_name: '' }))]