2016-06-28 77 views
0

我想正如標題所說,所以我想到了一個簡短的方法做到這一點。但它不起作用:循環列表如果一個列表或一個新的列表中有對象,如果一個對象

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

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

爲什麼不能正常工作? Fiddle

+0

哦,是的,趕到寫例如當。 –

+0

你爲什麼決定它不起作用?它像預期的那樣提示'循環' – RomanPerekhrest

+0

顯然它只是一個支架錯字。投票結束。 –

回答

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

相關問題