我正在尝试根据条件将对象添加到数组中。
我的期望是在满足条件时添加两个对象,但是我只会添加最后一个添加的对象(缺少其元素)。
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’,
}]
有人可以帮我指出我做错了什么地方吗?
谢谢。
答案 0 :(得分:1)
在Javascript中,当您放置comma-separated expressions within parathesis时,它将执行每个(从左到右)并返回last的结果。
在您的情况下,({ 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);
答案 1 :(得分:0)
只需使用不同的逻辑,如下所示:
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; }