4 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
基本上,您需要將對(duì)象括在括號(hào)中以將其與塊語(yǔ)句區(qū)分開(kāi)來(lái)。
const
cars = [{ name: 'BMW', type: 'Sedan' }, { name: 'Audi', type: 'SUV' }, { name: 'BMW', type: 'SUV' }],
result = cars
.filter(({ type }) => type === 'SUV')
.map(({ name: brand }) => ({ brand }));
// ^^^^^^^^^^^ wrap it
console.log(result);

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果你想從箭頭函數(shù)返回一個(gè)對(duì)象字面量,你需要將該對(duì)象字面量括在圓括號(hào)中以區(qū)別于代碼塊,代碼塊也恰好用花括號(hào)括起來(lái):
result = cars.map(car => ({
brand: car.name
}));
有趣的是您的代碼沒(méi)有導(dǎo)致錯(cuò)誤。只是因?yàn)?JavaScript 中有標(biāo)簽語(yǔ)法,所以箭頭函數(shù)中的代碼基本上會(huì)創(chuàng)建一個(gè)brand標(biāo)簽到松散值car.name.

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
您在 map 函數(shù)隱式返回的新對(duì)象周?chē)鄙僖粚?duì)括號(hào)。這是 es6 的一個(gè)棘手的語(yǔ)法。
const cars = [{
name: 'BMW',
type: 'Sedan'
}, {
name: 'Audi',
type: 'SUV'
}, {
name: 'BMW',
type: 'SUV'
}]
const result = cars.filter(({
type
}) => type === 'SUV').map((car) => ({
brand: car.name
}))
console.log(result)

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
為此,您可以聲明一個(gè)變量并將其返回。
const cars = [{
name: 'BMW',
type: 'Sedan'
}, {
name: 'Audi',
type: 'SUV'
}, {
name: 'BMW',
type: 'SUV'
}]
const result = cars.filter(({
type
}) => type === 'SUV').map((car) => {
let obj = {brand: car.name}
return obj
})
console.log(result)
添加回答
舉報(bào)