【问题标题】:JSON to associative array in jqueryJSON到jQuery中的关联数组
【发布时间】:2013-03-13 08:02:41
【问题描述】:

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

我有(从 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'];

【问题讨论】:

  • dataArray = obj[0];。 obj 实际上是一个对象数组,所以如果你想引用第一个对象,你只需将它分配给一个变量。
  • 你只是随机发明了一些非 JavaScript 语法。为什么?

标签: jquery arrays json


【解决方案1】:

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

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

【讨论】:

  • 而 JS 中的所有对象都是一个关联数组
【解决方案2】:

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

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

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

两者的工作原理相同。

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

【讨论】:

    【解决方案3】:

    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
    

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

    【讨论】:

    • 您是否打算在obj.["propertyName"] 中添加一个点?关于下线和 MildlySerious 的回答看起来不正确!
    • @JamesCameron 不,我猜这是 F# 编程的遗留问题。感谢您发现它:)
    【解决方案4】:

    使用.map()

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

    【讨论】:

      【解决方案5】:

      也许你想要这样的东西:

       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]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-10
        • 2011-03-05
        • 2011-05-24
        • 1970-01-01
        • 2013-10-22
        • 1970-01-01
        • 2017-09-17
        相关资源
        最近更新 更多