是否有一个直线可以创建长度为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: '' })]
答案 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: '' }))]