我想根据布尔值在数组中添加/删除元素。这是有效的。
是否可以缩短它?
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)
}
答案 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));
}