2

我在这里阅读了更多内容,但我还没有找到我的问题的答案 我的问题:

我有(从 php 通过 ajax 返回 json 字符串)

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'];
4

5 回答 5

8

javascript中没有关联数组的概念,只有对象。

var arr = $.parseJSON(str);
var obj = arr[0];
var _id = obj['_id']
于 2013-03-13T08:06:27.833 回答
4

Javascript 没有关联数组。您将不得不使用使用大括号的对象{}

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

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

两者的工作原理相同。

因此,对于您的示例,您可以按照您期望关联数组工作的方式访问该对象。

于 2013-03-13T08:06:16.597 回答
1

JavaScript 中的任何对象都是关联数组

例如你可以做

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

这会将每个对象的值打印到控制台。在您的情况下,实际上并不需要对 hasOwnProperty 的调用,因为由于它是原型而获得的对象,但通常建议在迭代对象的属性时检查它是否属于它自己的对象或某个对象原型链

对于几乎 (1) 对象的任何属性,有两种语义等效的方式来访问该值

obj.propertyName
obj["propertyName"]

两者都会产生相同的值。

(1) 当属性名称不是有效标识符时。即你可以做

obj["property name"]

但做不到

obj.property name

换句话说,属性名称不必是有效的标识符。

于 2013-03-13T08:06:38.370 回答
0

采用.map()

for (var i in elements)
{
    elements[i] = $.map(elements[i],function(v)
    {
        return v;
    });
}     
于 2013-03-13T08:07:56.353 回答
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]);
于 2013-03-13T08:34:10.130 回答