2013-03-13 63 views
2

我更讀到這裏,但我還沒有找到答案,我的問題 我的問題:JSON到關聯數組中的jQuery

我有(從通過AJAX返回JSON字符串PHP)

str = '[{"id":"159","pavadinimas":"Building B","_id":"200",.................}]'; 

這是JSON字符串,我做obj = $.parseJSON(str); 我可以採取任何價值以這種方式就像alert(obj[0]._id)我得到200

但我怎麼能得到聯想從JSON數組一樣:

dataArray = [ 
"id":"159", 
"pavadinimas":"Building B", 
"_id":"200", 
... 
] 

我想獲得價值200一樣,

val = dataArray['_id']; 
+0

'dataArray中的obj = [0];'。 'obj'實際上是一個對象數組,所以如果你想引用第一個對象,你只需將它分配給一個變量。 – 2013-03-13 08:05:16

+0

你剛剛隨機發明瞭一些非Javascript語法。爲什麼? – 2013-03-13 08:19:44

回答

6

JavaScript中沒有關聯數組的概念,但只有對象。

var arr = $.parseJSON(str); 
var obj = arr[0]; 
var _id = obj['_id'] 
+1

和JS中的所有對象都用於所有目的的關聯數組 – 2013-03-13 08:13:36

4

JavaScript沒有關聯數組。您將不得不使用使用大括號{}代替的對象。

dataObj = { 
    "id":"159", 
    "pavadinimas":"Building B", 
    "_id":"200", 
    ... 
} 

console.log(dataobj.id); 
console.log(dataobj['id']); 

兩者的工作原理相同。

因此,對於您的示例,您可以按照您希望關聯數組工作的方式訪問該對象。

1

在JavaScript的任何目的是所有目的關聯數組

例如你可以做

dataArray = obj[0]; 
for(var prop in dataArray) { 
    if(dataArray.hasOwnProperty(prop)){ 
     console.log(dataArray[prop]; 
    } 
} 

這將打印每個對象的值到控制檯。調用hasOwnProperty在你的情況下並不是真的需要,因爲你得到的對象是由於它的原型而產生的,但是它通常比在迭代對象的屬性時檢查它是屬於它自己的對象還是屬於某個對象的某個對象原型鏈

對於幾乎(1)對象的任何屬性有2點語義等同放着清單的方式來訪問該值

obj.propertyName 
obj["propertyName"] 

都將產生相同的值。 (1) 當屬性名稱不是有效的標識符。即你可以做

obj["property name"] 

但不能做

obj.property name 

換句話說,屬性名稱不必須是有效的標識符。

+0

您是否打算在'obj。[「propertyName」]'中放置一個點?關於下線和MildlySerious的回答,看起來並不正確! – 2014-05-18 15:27:01

+0

@JamesCameron Nope這是從做F#編程剩下的我猜。感謝您的發現:) – 2014-05-18 18:41:45

0

使用.map()

for (var i in elements) 
{ 
    elements[i] = $.map(elements[i],function(v) 
    { 
     return v; 
    }); 
}  
0

可能是你想要的東西是這樣的:

var idArray = []; 
var buildArray = []; 
var _idArray = []; 
var data = [{ 
       "id": 159, 
       "pavadinimas": "Building A", 
       "_id": 100 
      }, { 
       "id": 160, 
       "pavadinimas": "Building B", 
       "_id": 200 
      }, { 
       "id": 161, 
       "pavadinimas": "Building C", 
       "_id": 400 
      }]; 

$.each(data, function (i, item) { 
    idArray.push(item.id); 
    buildArray.push(item.pavadinimas); 
    _idArray.push(item._id); 
}); 

console.log(idArray[0]+' : '+buildArray[0]+ ' : ' +_idArray[0]);