配列fooからキー「bar」を削除して「bar」が表示されないようにする方法
for(key in foo){alert(key);}
配列fooからキー「bar」を削除して「bar」が表示されないようにする方法
for(key in foo){alert(key);}
回答:
配列から要素を削除しないため、deleteを使用しないでください。未定義として設定されるだけで、配列の長さに正しく反映されません。
キーがわかっている場合は、splice ie を使用する必要があります
myArray.splice(key, 1);
スティーブンの立場にいる人にとっては、次のようなことを試すことができます:
for (var key in myArray) {
if (key == 'bar') {
myArray.splice(key, 1);
}
}
または
for (var key in myArray) {
if (myArray[key] == 'bar') {
myArray.splice(key, 1);
}
}
for (var key in myArray)
代わりに使用for (key in myArray)
-それ以外の場合key
はグローバル変数であり、同じ問題のあるループ内で関数を呼び出すと、予期しない結果が発生します。
delete foo[key];
:D
eval
。オブジェクト/配列のキー/インデックスの削除は、を使用しない非常に簡単な方法で実現できますeval
。
重要な注意:JavaScript配列は、PHPから使用するような連想配列ではありません。「配列キー」が文字列の場合、配列の内容を操作することはありません。配列はオブジェクトであり、ブラケット表記を使用して<key name>という名前のメンバーにアクセスしています。したがって:
var myArray = []; myArray ["bar"] = true; myArray ["foo"] = true; alert(myArray.length); // 0を返します。
配列に要素を追加していないため、myArrayのbarおよびfooメンバーのみが変更されています。
キー名がわかっている場合は、次のようにします。
delete array['key_name']
これが私のやり方です
myArray.splice( myArray.indexOf('bar') , 1)
http://www.internetdoc.info/javascript-function/remove-key-from-array.htm
removeKey(arrayName,key);
function removeKey(arrayName,key)
{
var x;
var tmpArray = new Array();
for(x in arrayName)
{
if(x!=key) { tmpArray[x] = arrayName[x]; }
}
return tmpArray;
}