2013-03-13 185 views
3

我有一個JSON數組在javascript中的Ajax響應。如何從JSON數組獲取集合

[{"id":1,"text":"apple"},{"id":2,"text":"mango"},{"id":3,"text":"banana"}] 

我想提取的ids一個逗號分隔的列表像"1, 2, 3"從這個JSON響應。我怎樣才能做到這一點?

+0

你嘗試過什麼然而?爲什麼它不起作用?你是否得到任何錯誤等... – epoch 2013-03-13 13:21:24

+1

我沒有任何想法做到這一點。 – 2013-03-13 13:22:20

回答

3

首先,你解析JSON(如果你不這樣做的話):

var arr = JSON.parse('[{"id":1,"text":"apple"},{"id":2,"text":"mango"},{"id":3,"text":"banana"}]'); 

然後循環數組以提取每個對象上的id。您可以使用數組循環的map方法和IDS一氣呵成添加到一個新的數組:

var ids = arr.map(function(item) { 
    return item.id; 
}); 
alert(ids.join(',')); 
+0

謝謝,它工作:) – 2013-03-14 05:51:42

1

假設你的JSON是作爲字符串存儲jsonstr在您的JS代碼:

/*parse the JSON to a JS object*/ 
var data = JSON.parse(jsonstr); 
var ids = []; 

for(var i=0; i<data.length; i++){ 

    //loop over the array and if the id is defined add it 
    if(typeof data[i].id !== "undefined"){ 
     ids.push(data[i].id); 
    } 
} 
+0

@bfavaretto很好的問題。不喜歡評論顯然 – 2013-03-13 13:37:09

+0

@bfavaretto去爲它。我只是嘗試了大約5種不同的東西,即使在自己的行上使用/ ** /,也會打破後面的代碼。 – 2013-03-13 13:42:59

+0

我剛剛在meta上發佈了一個關於它的問題:http://meta.stackexchange.com/questions/171669/syntax-highlighter-failing-for-specific-code-block – bfavaretto 2013-03-13 13:50:07

0
var a = [{ 
    "id": 1, 
    "text": "apple" 
}, { 
    "id": 2, 
    "text": "mango" 
}, { 
    "id": 3, 
    "text": "banana" 
}]; 
var ar = []; 
for (var i = 0; i < a.length; i++) { 
    ar.push(a[i].id); 
} 

alert(ar.join(',')) 

http://jsfiddle.net/t3w5S/1/

+0

那不是你定義的JSON字符串,它是一個JavaScript對象。 – 2013-03-13 13:25:35

+2

@ ben336:糾正我,如果我錯了,原來的海報已經表示他有「一個JSON數組」,我解釋爲解析JSON陣列形式已經 – Thalaivar 2013-03-13 13:31:25

+0

但他的所有屬性都被雙引號。看起來更像是一個JSON字符串。它總是有可能讓他感到困惑,但是他說他有JSON,而且它的格式與它的JSON格式一樣,所以我認爲沒有太多理由認爲它不是JSON – 2013-03-13 13:36:17

-1

關於這一點:

x = [{"id":1,"text":"apple"},{"id":2,"text":"mango"},{"id":3,"text":"banana"}]; 
str = ""; 
for(i=0;i<x.length;i++) 
{ 
    str += x[i].id.toString() + ','; 
} 
str = str.substring(0, str.length - 1); 
console.log(str); 
+0

不用「var」定義變量。假設存在「id」。當它已經集中在兩個字符串周圍時,不必要地調用toString。如果任何一個「id」未定義,它將不會有toString方法,並且此代碼段將會出錯。原始海報表示他們希望它以逗號和空格集中。我看不到空間。當一個簡單的數組和連接可以做到這一點時,也可以使用過於複雜的可疑子字符串方法來修剪最後一個字符。最後假設當原始海報提到需要解析的JSON時,響應已經是一個數組。 – Ultimater 2013-03-13 13:53:26