JS:从数组中添加/删除元素

时间:2017-02-22 14:58:14

标签: javascript arrays

我想根据布尔值在数组中添加/删除元素。这是有效的。

是否可以缩短它?

if (state === true) {
    const index = array.indexOf(id)
    if (index > -1)
        array.splice(index, 1)
}
if (state === false) {
    const index = array.indexOf(id)
    if (index === -1)
        array.push(id)
}

5 个答案:

答案 0 :(得分:1)

稍短一些:

const index = array.indexOf(id);

if (state === true && index > -1) {
    array.splice(index, 1);
} else if (state === false && index === -1) {
    array.push(id);
}

答案 1 :(得分:1)

缩短&简化。

const index = array.indexOf(id);

if (state === true && index > -1) {
  array.splice(index, 1)
} else if (state === false && index === -1)  {
  array.push(id)
}

答案 2 :(得分:1)

您可以使用conditional (ternary) operator ?:来检查状态,具体取决于功能。

在第一部分中仅在state是假的情况下推送,而在第二部分仅在state真实时才进行拼接。

const index = array.indexOf(id);
index === -1 ? state || array.push(id) : state && array.splice(index, 1);

真相表

index  state  index === -1 ? state || array.push(id) : state && array.splice(index, 1)
-----  -----  ------------------------------------------------------------------------
   -1   true        true      true
   -1   false       true      false   array.push(id)
!==-1   true       false                                true    array.splice(index, 1)
!==-1   false      false                               false

答案 3 :(得分:0)

const index = array.indexOf(id);

//condition           ? condition true         : condition false
(state && index > -1) ? array.splice(index, 1) : array.push(id);

这是使用shortened conditional operator
有一些JavaScript Shorthands here

的便捷列表

答案 4 :(得分:0)

使用以下简短方法:

const index = array.indexOf(id);
if (typeof state === 'boolean') {  // considering only boolean values for `state`
    (state && index > -1 && array.splice(index, 1)) || (!state && index === -1 && array.push(id));
}