【问题标题】:get json key and value by index instead of their names通过索引而不是它们的名称获取 json 键和值
【发布时间】:2019-12-04 08:09:57
【问题描述】:

这是我的 Json

var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');

我可以通过使用像console.log(obj.name);这样的键来获取json的值

但我想通过索引而不是像 console.log(obj[0]); 这样的键来获取值

this guy 这里说这不好,因为 JSON 是无序的,但在我的情况下,无论如何顺序总是相同的。

$.each(obj ,function(i,item){
    console.log(i+' '+item);
});

上面的代码将一次性返回所有的键和值,但我想一一显示。

如果我可以通过索引获取值,这对我向用户显示数据将非常有帮助。

那么有可能吗??

【问题讨论】:

  • 如果你想要一个索引集合,使用一个数组
  • @SaurabhYadav 那么如何将 json 转换为数组??
  • 你可以使用Object.entries将你的json转换成数组。
  • “这家伙”是对的!我不知道您如何确保顺序始终相同,除非您在使用索引时对键进行排序,例如通过Object.keys(obj).sort()
  • @vicraj 因为我会发送它

标签: javascript jquery json


【解决方案1】:

你可以用Object.values将值转换成数组,然后得到你想要的索引:

var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}')
console.log(obj.name) // John
var array = Object.values(obj)
console.log(array[0]) // John

【讨论】:

  • 正是我需要的。非常感谢
【解决方案2】:

const data = {"name": "John", "age": 30, "city": "New York"}
Object.entries(data).forEach(([k, v], i) => console.log(i, k, v))

【讨论】:

    【解决方案3】:

    您可以使用Object.entries 方法或Object.values 或者您可以使用Map,它保存键值对并记住键的原始插入顺序

    Map 对象保存键值对并记住原来的 键的插入顺序。任何值(对象和基元) values) 可以用作键或值。

    Object.values() 方法返回给定对象自己的数组 可枚举的属性值

    var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');
    
    
    for (var [key, value] of Object.entries(obj)) {
      console.log(key + ' = ' + value);
    }
    
    
    
    const map = new Map(Object.entries(obj));
    
    for (var [key, value] of map.entries()) {
      console.log(key + ' = ' + value);
    }
    
    
    let values = Object.values(obj);
    console.log(values);

    【讨论】:

      猜你喜欢
      • 2017-08-27
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 2017-12-26
      相关资源
      最近更新 更多