如果我有一个data
数组,
const data = [
{
name: "dog",
age: 11
},
{
name: "cat",
age: 21,
}
]
如果条件为真,我想在中间添加一个对象:
const shouldAddNewAnimal = true;
const animal = {
name: "tiger",
age : 22,
}
如果没有else
,我该怎么写呢?
const data = [
{
name: "dog",
age: 11
},
foo ? animal : {};
{
name: "cat",
age: 21,
}
]
以上是我唯一能想到的写它的方法,但如果条件不成立,我不想在里面插入一个空对象。
您可以使用数组进行扩展,一个带有所需对象,另一个为空。
const
shouldAddNewAnimal = true,
animal = { name: "tiger", age: 22 },
data = [
{ name: "dog", age: 11 },
...(shouldAddNewAnimal ? [animal] : []),
{ name: "cat", age: 21 }
];
console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }
您可以通过添加null并使用filter
过滤掉它们来实现这一点
const shouldAddNewAnimal = false;
const animal = {
name: 'parrot',
age:12
}
let data = [
{
name: "dog",
age: 11
},
shouldAddNewAnimal ? animal : null,
{
name: "cat",
age: 21
}
].filter(item => item !== null);
console.log(data);
const shouldAddNewAnimal = true;
const animal = {
name: 'parrot',
age:12
}
let data = [
{
name: "dog",
age: 11
},
shouldAddNewAnimal ? animal : null,
{
name: "cat",
age: 21
}
].filter(item => item !== null);
console.log(data);
您可以使用排列运算符:
const foo = true;
const animal = { name: "mouse", age: 10 };
const data = [
{
name: "dog",
age: 11
},
...(foo ? [animal] : []),
{
name: "cat",
age: 21,
}
]
console.log(data);
这将导致CCD_ 4被从其封闭数组中提取出来;外部";大堆
在";否则";扩展null
将导致没有任何东西被添加到"0"路径;外部";大堆