javascript - 如何在将元素推入数组时使用三元运算符
问题描述
我正在尝试根据条件将对象添加到数组中。
我的期望是在满足条件时添加两个对象,但我只添加了最后一个对象(缺少它的元素)。
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 中,当您在 parathesis 中放置逗号分隔的表达式时,它将执行 each(从左到右)并返回 last 的结果。
在您的情况下({ label: 'John', value: '28',}, { label: 'Miller', value: '40',})
,结果只是最后一个对象{ label: ‘Miller’, value: ’40’, }
并添加到数组中。
为了使它能够使用数组,然后使用扩展语法来添加它们。
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);
推荐阅读
- pandas - 如何在数据帧上访问 extractall 的结果
- .net-core - 未找到“Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter.resources”
- sql-server - SQL Server 我可以在 Excel 中使用 VBA 看到存储过程,但用户组不能
- gcc - GCC不必要地访问线程本地存储?
- javascript - 在 QML 中从数组中的 bool 更改颜色
- android - 生成后 gradle-witness 校验和失败
- html - 将每张牌向左浮动 - 牌的水平线
- python - 在 fb status [Python] [Facebook API] 上发布多于一行的文本
- html - 和
- google-sheets - 今天时间范围和日期的 Countif 代码是什么?谢谢