我试图根据条件将对象添加到数组中。
我期望在满足条件时添加两个对象,但我只获得添加的最后一个对象(其元素缺失)。
const country = ‘USA’
citizenArray.push([
{
label: ‘Alex’,
value: ’32’,
},
country === ‘USA’
? ({
label: ‘John’,
value: ’28’,
},
{
label: ‘Miller’,
value: ’40’,
})
: {
label: ‘Marsh’,
value: ’31’,
},
]);
我得到的输出:
[{
label: ‘Alex’,
value: ’32’,
},
{
label: ‘Miller’,
value: ’40’,
}]
预期:
[{
label: ‘Alex’,
value: ’32’,
},
{
label: ‘John’,
value: ’28’,
},
{
label: ‘Miller’,
value: ’40’,
}]
有人可以帮我指出我做错了吗?
谢谢。
在Javascript中,当您放置comma-separated expressions within parathesis时,它将执行每个(从左到右)并将返回最后的结果。
在你的情况下,({ label: 'John', value: '28',}, { label: 'Miller', value: '40',})
结果只是最后一个对象{ label: ‘Miller’, value: ’40’, }
并添加到数组。
使其工作以使用数组,然后使用spread syntax添加它们。
const country = 'USA';
const citizenArray = [];
citizenArray.push([{
label: 'Alex',
value: '32',
},
...(country === 'USA' ? [{
label: 'John',
value: '28',
}, {
label: 'Miller',
value: '40',
}] : [{
label: 'Marsh',
value: '31',
}])
]);
console.log(citizenArray);
只需使用不同的逻辑:
const country = "USA";
let citizenArray = [];
citizenArray.push([{ label: "Alex", value: "32" }, ...(country == "USA" ? [{ label: "John", value: "28" }, { label: "Miller", value: "40" }] : [{ label: "Marsh", value: "31" }])]);
console.log(citizenArray);
.as-console-wrapper { max-height: 100% !important; top: auto; }