2016-10-31 4 views
1

요소를 삭제하려고하는 JSON 개체 리터럴이 있습니다 (사과라고 가정 해 봅시다). 나는 많은 것들을 시도했지만, 나는 단지 그것이 작동하도록 할 수 없습니다.개체 리터럴의 요소를 삭제할 수 없습니다.

var JSON = { 
    "fruits": [{ 
     "name": "oranges", 
     "quantity": "3" 
    },{ 
     "name": "apples", 
     "quantity": "2" 
    },{ 
     "name": "bananas", 
     "quantity": "3" 
    } 
]}; 

console.log(JSON); 
delete JSON.fruits[1]; 
console.log(JSON); 

위의 코드를 호출하면 개체가 제거되지만 다음과 같이 보이며 3 번째 개체 앞에 키가 삽입됩니다. this fiddle을보십시오. 나는 그런 일이 일어나기를 원하지 않는다.

피들에서 일어나는 일입니다. 그런데 제 생생한 스크립트에서는 삭제 된 오브젝트를 제 스크립트를 깨뜨리는 단어 null으로 바꾸는 것 같습니다.

나는 또한 .splice()의 많은 변형을 시도했지만 객체 리터럴이 아닌 배열의 것으로 보인다.

아이디어가 있으십니까?

+0

귀하의 피들러 오타가 있습니다 !!!! – Leo

+0

고마워요 @ 레오 - 해결! – Brad

+0

제목에 "개체 리터럴의 요소 삭제"라고 쓰여 있지만 배열의 개체를 실제로 삭제하려고하는 것 같습니다. –

답변

2

개체 내부의 배열에 Array#splice을 사용할 수 있습니다.

delete은 개체를 삭제하지만 배열의 정의되지 않은 요소가 나타납니다.

var object = { fruits: [{ name: "oranges", quantity: "3" }, { name: "apples", quantity: "2" }, { name: "bananas", quantity: "3" }] }; 
 

 
object.fruits.splice(1, 1); 
 
console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

고마워요! 그게 효과가있어! 나는 이미 이것을 시도했다는 것을 맹세 할 수 있었다! 이상하게도,이 코드를 실행할 때'console.log (activeCaseImplants); activeCaseImplants.implants.splice (1, 1); console.log (activeCaseImplants);'콘솔 로그는 사과 요소가없는 객체를 표시합니다 ... 이상! – Brad

+0

'.as-console-wrapper'는 무엇을합니까? – Brad

+0

콘솔 문제와 같이 시간이 초과되었습니다. CSS는 위의 창에서 전체 개체를 볼 수있게합니다. –

관련 문제