【问题标题】:javascript object to map要映射的 javascript 对象
【发布时间】:2013-01-15 12:34:59
【问题描述】:

我有一个对象列表

{
  "list": {
    "item": [
      {
        "id": "12",
        "value": "abc"
      },
      {
        "id": "34",
        "value": "pqr"
      }
    ]
  }
}

并想将其转换为地图

{"12": "abc", "34","pqr"}

最简单的方法是什么?

【问题讨论】:

  • 应该是{"12","abc", "34","pqr"}还是{"12":"abc", "34":"pqr"}?你能纠正一下吗?
  • 尝试迭代每个对象,甚至 Array.map(function)。想知道有没有更简单的方法
  • 我注意到您确实不接受我的回答,有什么问题吗?我想知道什么,所以我可以进一步改进它,谢谢
  • 抱歉,我尝试了一些围绕问题和答案的操作。

标签: javascript map javascript-objects


【解决方案1】:
myObject.list.item.forEach(function(item){
  myMap[item.id] = item.value;
}

这样的事情就可以了...

【讨论】:

    【解决方案2】:

    for循环是最简单的方法:

    var result = {};
    for (var i = 0; i < obj.list.item.length; i++) {
        result[obj.list.item[i].id] = obj.list.item[i].value;
    }
    console.log(result);
    

    【讨论】:

      【解决方案3】:

      在数组或列表中使用 jsondecode 在 php 中或在 c# 中使用反序列化类转换 (http://stackoverflow.com/questions/2546138/deserializing-json-data-to-c-sharp-using-json-净)

      【讨论】:

      • 问题被标记为 JavaScript。所以 PHP 或 C# 都不是有效的解决方案。
      【解决方案4】:

      我会这样做:

      function map(list, key, value){
          var result = {};
          for(i in list){
              result[list[i][key]] = list[i][value];
          }
          return result;
      }
      

      然后用你的对象:

      var list =  {
        "list": {
          "item": [
            {
              "id": "12",
              "value": "abc"
            },
            {
              "id": "34",
              "value": "pqr"
            }
          ]
        }
      }
      

      我可以这样调用函数:

      map(list["list"]["item"],"id","value")
      

      它会返回: { 12:“ABC”, 34:“pqr” }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-03
        • 2021-07-24
        • 2021-10-10
        相关资源
        最近更新 更多