답변:
사용하지 마십시오 삭제 그 다음 배열의 길이에 제대로 반영되지 않습니다 정의되지 않은으로 만 설정할 것 배열에서 요소를 제거하지 않으므로.
당신이 키를 알고 있다면 당신은 사용해야 스플 라이스 즉,
myArray.splice(key, 1);
Steven의 입장에있는 사람에게는 다음과 같이 시도 할 수 있습니다.
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];
:디
eval
. 객체 / 배열의 키 / 인덱스 삭제는를 사용하지 않는 훨씬 간단한 방법으로 달성 할 수 있습니다 eval
.
중요 사항 : JavaScript Array는 PHP에서 익숙한 것과 같은 연관 배열이 아닙니다. "배열 키"가 문자열이면 더 이상 배열의 내용을 조작하지 않습니다. 배열은 객체이며 대괄호 표기법을 사용하여 <key name>이라는 멤버에 액세스합니다. 그러므로:
var myArray = []; myArray [ "bar"] = true; myArray [ "foo"] = true; alert (myArray.length); // 0을 반환합니다.
배열에 요소를 추가하지 않았기 때문에 myArray의 bar 및 foo 멤버 만 수정했습니다.
키 이름을 알고 있다면 다음과 같이하십시오.
delete array['key_name']
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;
}