2016-06-28 2 views
0

제목과 똑같은 내용을 시도하고 있으므로이 작업을 수행하는 간단한 방법을 생각했습니다. 하지만 작동하지 않습니다 :목록이 있으면 목록을 반복하거나 객체가있는 객체를 새 목록에 넣으십시오.

var json = "{\"prop\": \"value\"}"; 

(JSON.parse(json).forEach ? JSON.parse(json) : [JSON.parse(json)]).forEach(function(item) { 
    alert('Looped'); 
}); 

왜 작동하지 않습니까? Fiddle

+0

오, 그래, 돌진했다. –

+0

왜 작동하지 않는다고 결정 했습니까? 예상했던대로 'Looped'라고 알려줍니다. – RomanPerekhrest

+0

분명히 오타 (bracket) 오타였습니다. 투표하기로 결정했다. –

답변

0

Array.isArray() 여기 편리 : 예를 작성할 때

var json = '{"prop": "value"}'; 
 

 
var parsedJson = JSON.parse(json); 
 
var myArray = Array.isArray(parsedJson) ? parsedJson : [parsedJson]; 
 

 
myArray.forEach(function(item) { 
 
    console.log('looped'); 
 
});

Docs

+0

이 솔루션에 대해 알고 있습니다. 나는 왜 내가 일하지 않을지 궁금하다. 어쨌든 고마워. –

+1

해결책은 삼항 연산자 뒤에 빠진 괄호를 추가하고 JSON을 수정하면 작동합니다. https://jsfiddle.net/3ds8xf9h/ - 구문 분석 된 JSON이 다음과 같은 배열인지 확인하는 것은 여전히 ​​좋은 생각입니다. 'forEach' 함수가 있는지 검사합니다. – Timo

관련 문제