Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在数组中有条件地添加或删除元素_Javascript_Ecmascript 6_Conditional Operator - Fatal编程技术网

Javascript 如何在数组中有条件地添加或删除元素

Javascript 如何在数组中有条件地添加或删除元素,javascript,ecmascript-6,conditional-operator,Javascript,Ecmascript 6,Conditional Operator,我不希望第二个元素在else条件下为null。。我只是不想要第二个元素。 如何解决这个问题 var模板=”; var myArray=[ {element:“头”}, template=='foo'?{element:“边栏”}:null, {元素:“页脚”} ] log(myArray)这里有一个叫做条件扩展操作符的东西,它非常适合您的问题 当条件为false时,您将扩展空数组,这样就不会向您声明的数组中添加任何内容 const template1=“” 常量myArray1=[ {ele

我不希望第二个元素在else条件下为null。。我只是不想要第二个元素。 如何解决这个问题

var模板=”;
var myArray=[
{element:“头”},
template=='foo'?{element:“边栏”}:null,
{元素:“页脚”}
]

log(myArray)
这里有一个叫做条件扩展操作符的东西,它非常适合您的问题

当条件为false时,您将扩展空数组,这样就不会向您声明的数组中添加任何内容

const template1=“”
常量myArray1=[
{element:“头”},
…(template1=='foo'?[{element:'sidebar}]:[]),
{元素:“页脚”}
]
console.log(myArray1)
const template2=“foo”
常量myArray2=[
{element:“头”},
…(template2=='foo'?[{element:“sidebar”}]:[]),
{元素:“页脚”}
]

console.log(myArray2)
我喜欢另一个示例中的spread操作符

为了兼容性,只需使用if:

var template1=“foo”;
var myArray1=[
{element:“头”},
{元素:“页脚”}
]
if(template1==='foo')myArray1.splice(1,0,{element:“sidebar”})
console.log(myArray1)
var template2=“”;
var myArray2=[
{element:“头”},
{元素:“页脚”}
]
if(template2==='foo')myArray2.splice(1,0,{element:“sidebar”})
console.log(myArray2)
const模板=”;
常量myArray=[
{element:“头”},
{元素:“页脚”},
…(模板=='foo'?[{element:'sidebar}]:[])
]

console.log(myArray)
为什么要在数组元素中放入条件语句?我为您制作了一个代码片段
[…(template==='foo'?[{element:“sidebar”}]:[])]
?一旦完成,您就不能使用filter方法了吗?所以
console.log(myArray.filter(Boolean))
将完成这项工作;更新了一个示例,一些喜欢过度优化一切的人可以传播一个空字符串而不是一个空数组(
…(template1=='foo'?[{element:“sidebar”}]:”),
),以避免创建其他未使用的对象(但我不知道它将节省多少毫秒或字节的内存)+1@FZs,有趣的解决方案,从未遇到过这种方法。但你不认为阅读代码的人会感到困惑吗?Typescript中会出现编译错误,例如:
const a:number[]=[123,…(true?[123]:'')
(你可以在操场上试试)@MarekSzkudelski我不会用这个,只是针对那些喜欢过度优化一切的人(不包括我)。代码中的性能优化常常使下一个读者感到困惑。。。