delete array[i]
はarray[i] = undefined
と同じですか?私は前者が疎な配列を生成することを知っていますか?後者も同じですか?'array [i] = undefined'はスパース配列を生成しますか?
3
A
答えて
2
いいえ、後者は同じことをしません。値をundefined
に設定するだけで、そのインデックスは削除されません。
delete
はインデックスを削除しますが、長さは更新されないため、実際には定義されていないインデックスになり、値undefined
だけではありません。
つまり、長さが項目の数よりも多い「疎」配列です。
あなたは、彼らが価値undefined
を反復処理するように、ほとんどの配列方法で簡単にこれをテストではなく、定義されていないインデックスを超えることができ(違いがあります)
var arr = [0, 1, 2, 3];
delete arr[1]; // delete the second index
arr.forEach(function(item) {
console.log(item); // 0, 2, 3
});
console.log('--------')
var arr2 = [0, 1, 2, 3];
arr2[1] = undefined; // set the second index to "undefined"
arr2.forEach(function(item) {
console.log(item); // 0, undefined, 2, 3
});
1
いいえ、彼らは同じことをしません。 MDN's delete
operator articleから:
あなたは配列の要素を削除すると、配列要素
を削除、配列の長さは影響を受けません。これは、配列の最後の要素を削除しても保持されます。
演算子
delete
10が配列要素を削除すると、その要素は配列に含まれなくなります。次の例ではdelete
でtrees[3]
が削除されています。あなたが存在するが、undefined
値を持つ配列要素をしたい場合はvar trees = ['redwood', 'bay', 'cedar', 'oak', 'maple']; delete trees[3]; if (3 in trees) { // this does not get executed }
は、代わりに
delete
オペレータの未定義の値を使用します。次の例では、trees[3]
値は不定割り当てられているが、配列要素がまだ存在する:var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple']; trees[3] = undefined; if (3 in trees) { // this gets executed }
0
を高密度アレイが疎かにすることができ、両方のいずれかを使用して。彼らの使い方は異なります。
見てみましょう
...var arr = [1,2,3];
delete arr[10]; // <- returns true but arr is not sparse
delete arr[1]; // <- returns true and arr is now sparse
var arr = [1,2,3];
arr[1] = undefined; // <- arr is not sparse
arr[10] = undefined; // <- arr is now sparse
関連する問題
- 1. React this.state undefined array
- 2. $ array [$ key] = $ somethingは新しい配列を作成します
- 3. 配列のnullまたはundefined値をチェックしますか?
- 4. PHPはGETして配列を生成しますか?
- 5. 圧縮スパース列(CSC)または圧縮スパース行(CSR)スパース行列?
- 6. 配列undefined javascript
- 7. numpyオブジェクト配列をスパース行列に変換します
- 8. scipyスパース行列からスパースRDDを作成
- 9. PHPは別の配列から配列を作成します
- 10. 変換文字列配列は、Iが作成した配列の配列
- 11. .NETライブラリにスパース配列の実装はありますか?
- 12. なぜ `array_ndims(array [])`はNULLを生成しますか?
- 13. C++で "array(i)[j]"に "*(*(array + i)+ j)"を使用する理由は?
- 14. Pythonの配列[++ i]と配列[i ++]に相当するコードはありますか?
- 15. Pythonでスパース行列をスパース行列に追加するには?
- 16. PHP配列 - 中括弧の対角括弧($配列[$ i]は$配列$ {I} VS)
- 17. コールバックはAngular2/Firebaseの "TypeError:this is undefined"を生成します
- 18. $$ array [0]は配列名ではなく配列名を返します
- 19. スパース行列とnumpy配列の使用
- 20. 配列のforループ(java)に固執しています。 [i]、[i + 1]、[i + 2]
- 21. PouchDBはオブジェクトの配列からオブジェクトを生成します
- 22. _eachは$ arrayで配列を配列し、配列の配列は$ handlerで扱います。
- 23. "for i in array"内のiのデータ型は何ですか
- 24. 関数の配列を生成していますか?
- 25. 私の配列はNANを生成します
- 26. どのように配列を次のような関数に渡しますか?void fooboo(char array [i]);
- 27. データオブジェクトの配列の配列を作成しますか?
- 28. Numpyは2D配列を操作して3D配列を生成します
- 29. Pythonでスパース行列を作成する
- 30. より大きな配列から乱数配列を生成しますか?