JS:有条件地在数组中间添加加法



如果我有一个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"路径;外部";大堆

最新更新