【问题标题】:How to get json name values on iteration instead of indexes or ids?如何在迭代时获取 json 名称值而不是索引或 id?
【发布时间】:2016-12-28 13:38:27
【问题描述】:

我有以下 json:

var testjson = {
    "Mytest": [{
        "Testing": {
            "static": {
                "name": "first name"
            },
            "key1": "key1 val",
            "key2": 10

        }
    }, {
        "Testing": {
            "static": {
                "name": "second name"
            },
            "key3": 20,
            "key4": true


        }
    }, {
        "Testing": {
            "static": {
                "name": "third name"
            },
            "key5": "key5 val"

        }
    }]
}

我有以下咖啡脚本:@itemNames = (item for item of @mydata).sort (a,b) -> a>b,但我将其更改为以下 javascript 转换:

var mydata = testjson.Mytest;
var item;

this.itemNames = ((function() {
  var results;
  results = [];
  for (item in mydata) {
    results.push(item);
  }
  return results;
}).call(this)).sort(function(a, b) {
  return a > b;
});
console.log(mydata);//gives: [Object, Object, Object] 
console.log(this.itemNames);//gives: ["0", "1", "2"], but I need it like: ["first name", "second name", "third name"], how can I get it ?

在这里,我在控制台中得到输出为:["0", "1", "2"],但我需要它:["first name", "second name", "third name"],当然如果我在控制台上展开它,它应该显示这些值(例如:0: "first name", 1: "second name", 2: "third name" )。已创建 Fiddle

请帮助我如何获得这些名字并提前感谢。

【问题讨论】:

    标签: javascript jquery json coffeescript


    【解决方案1】:

    你可以这样做。你的项目是元素的索引。你需要在索引处获取元素,然后通过Testing.static.name访问属性name

    this.itemNames = ((function() {
      var results;
      results = [];
      for (item in mydata) {
        results.push(mydata[item].Testing.static.name);
      }
      return results;
    }).call(this)).sort(function(a, b) {
      return a > b;
    });
    

    这是代码。

    var testjson = {
        "Mytest": [{
            "Testing": {
                "static": {
                    "name": "first name"
                },
                "key1": "key1 val",
                "key2": 10
    
            }
        }, {
            "Testing": {
                "static": {
                    "name": "second name"
                },
                "key3": 20,
                "key4": true
    
    
            }
        }, {
            "Testing": {
                "static": {
                    "name": "third name"
                },
                "key5": "key5 val"
    
            }
        }]
    };
    
    
    var mydata = testjson.Mytest;
    var item;
    
    this.itemNames = ((function() {
      var results;
      results = [];
      for (item in mydata) {
        results.push(mydata[item].Testing.static.name);
      }
      return results;
    }).call(this)).sort(function(a, b) {
      return a > b;
    });
    
    console.log(this.itemNames);

    【讨论】:

    • 感谢您的回复,是的,这就是我要找的!感谢您的帮助!!
    【解决方案2】:

    您可以使用这个简单的解决方案...

    var mydata = testJSON.Mytest;
    var nameArray = [];
    var nameMap= {};
    var count =0;
    $.each(mydata , function(i , data)
    {
        var data1 = data.Testing
    
        var name = data1.static.name
        nameArray.push(name);
        nameMap[count] = name;
        count ++;
    });
    
    console.log(nameArray);
    console.log(nameMap);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多