2017-05-01 3 views
0

Bがどのインデックスにあるかチェックする必要がありますか?どうやってBを取り除くことができますか?あなたが本当にあなたはそれがように、アレイ上delete演算子を使用しての考えに可能性を約束している場合Cは値を使用して配列を削除するインデックスがない

let grade = ['A','B','C'] 
delete grade['B']; // this won't work? 
console.log(grade) 
+1

インデックスを取得するには 'indexOf'を使用し、配列からそのインデックスの要素を削除するには' splice'を使用します。 – RJM

+0

'grade.splice(grade.indexOf( 'B')、1); ' –

答えて

1

、私はA、Bであるかもしれないのparamを受け取る機能を持って言う:

let grade = ['A', 'B', 'C']; 
delete grade[grade.indexOf('B')]; 

ただし、これは実行している可能性が高いものではありません。より明確に言えば、上記の操作を['A', 'C']に戻したいと思っています。それは実際にはありません。むしろ、インデックス1にundefinedがあります(値はB以前に存在します)。

console.log(grade); 
['A', undefined x 1, 'C'] 

正しく配列からBを置換するための最も適切な動作がArray#spliceを使用することであろう。例:

+0

スプライスの2番目のパラメータが必要ですか? 1は何のために? –

+0

@Alan Jenshen - これは 'splice'メソッドのドキュメントにあります。例:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice?v=control – RJM

+0

はい。デフォルトでは、 'Array#splice'メソッドに2番目のパラメータが与えられていない場合、配列の長さから最初のパラメータの値をフォールバック値として使用します。この場合、それは '3 - 1 => 2'になります。したがって、 'grade.splice(grade.indexOf( 'B'))'は 'grade.splice(grade.indexOf( 'B')、2)'と同じです。両方とも ' ['A'] '。 – IsenrichO

関連する問題