2017-02-22 12 views
0

ブール値に応じて配列に要素を追加/削除したい。これが働いています。JS:配列から要素を追加/削除する

少し短くすることはできますか?

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) 
} 

答えて

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

ビット短い:

簡素化&を短縮
const index = array.indexOf(id); 

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

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

これは、あなたが機能に依存し、状態を確認してconditional (ternary) operator ?:を使用することができ、いくつかのJavaScript Shorthands here

+1

をなし。実際にスプライスとプッシュが発生しない部分が欠けています。 –

+0

@NinaScholzこれはこの部分になります: ':array.push(id);' – Craicerjack

+0

@NinaScholzなぜプッシュを見逃していると思うのか説明できますか? – Craicerjack

1

の便利なリストがありますshortened conditional operator
を使用しています。

stateが偽で、2番目の部分がスプライスの場合にのみ、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 
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)); 
} 
関連する問題