在JQUERY中使用JavaScript对象的索引检索该对象的键

在JQUERY中使用JavaScript对象的索引检索该对象的键,javascript,jquery,Javascript,Jquery,我有一个像这样的JavaScript对象 var obj = { "set1": [1, 2, 3], "set2": [4, 5, 6, 7, 8], "set3": [9, 10, 11, 12] }; 这个JavaScript对象将是完全动态的。所以我需要使用一些索引方法来获取这个JavaScript对象的键。像 key[1] should return "set2" 那么,如何从JavaScript对象获取任何索引的ID呢?您可以使用object.keys(o

我有一个像这样的JavaScript对象

var obj = {
    "set1": [1, 2, 3],
    "set2": [4, 5, 6, 7, 8],
    "set3": [9, 10, 11, 12]
};
这个JavaScript对象将是完全动态的。所以我需要使用一些索引方法来获取这个JavaScript对象的键。像

key[1] should return "set2"

那么,如何从JavaScript对象获取任何索引的ID呢?

您可以使用
object.keys(obj)
获取对象的键数组

在您的示例中,
Object.keys(obj)[1]
将返回“set2”

请注意,旧浏览器不支持Object.keys(请参阅下面的浏览器兼容性指南):

  • 铬-5
  • Firefox(Gecko)-4.0(2.0)
  • Internet Explorer-9
  • 歌剧院-12
  • 狩猎-5
但您可以使用以下代码对其进行多边形填充:

// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
if (!Object.keys) {
  Object.keys = (function() {
    'use strict';
    var hasOwnProperty = Object.prototype.hasOwnProperty,
        hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'),
        dontEnums = [
          'toString',
          'toLocaleString',
          'valueOf',
          'hasOwnProperty',
          'isPrototypeOf',
          'propertyIsEnumerable',
          'constructor'
        ],
        dontEnumsLength = dontEnums.length;

    return function(obj) {
      if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
        throw new TypeError('Object.keys called on non-object');
      }

      var result = [], prop, i;

      for (prop in obj) {
        if (hasOwnProperty.call(obj, prop)) {
          result.push(prop);
        }
      }

      if (hasDontEnumBug) {
        for (i = 0; i < dontEnumsLength; i++) {
          if (hasOwnProperty.call(obj, dontEnums[i])) {
            result.push(dontEnums[i]);
          }
        }
      }
      return result;
    };
  }());
}
//来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
如果(!Object.keys){
Object.keys=(函数(){
"严格使用",;
var hasOwnProperty=Object.prototype.hasOwnProperty,
HasdontenUnbug=!({toString:null}).propertyIsEnumerable('toString'),
多特南=[
“toString”,
“Tolocalesting”,
“价值”,
“hasOwnProperty”,
“isPrototypeOf”,
“propertyIsEnumerable”,
“构造函数”
],
dontEnumsLength=dontEnums.length;
返回函数(obj){
如果(对象的类型!='object'&&(对象的类型!='function'| |对象===null)){
抛出新的TypeError('Object.keys在非对象上调用');
}
var结果=[],prop,i;
用于(obj中的道具){
if(hasOwnProperty.call(obj,prop)){
结果:推动(支撑);
}
}
如果(hasDontEnumBug){
对于(i=0;i
试试这个:

转换数组中的json:

  var obj = {
        "set1": [1, 2, 3],
        "set2": [4, 5, 6, 7, 8],
        "set3": [9, 10, 11, 12]
    };
    var arr = []
    for (var key in obj) {
        arr.push(obj[key]);
    }
    console.log(arr[1]);
或对象数组:

var obj = {
    "set1": [1, 2, 3],
    "set2": [4, 5, 6, 7, 8],
    "set3": [9, 10, 11, 12]
};
var arr = []
for (var key in obj) {
    arr.push({key:obj[key]});
}
console.log(arr[1]);
jsFIDLE:

您有以下选项(这里也有):


您可以检索此代码中的所有密钥

    var obj = {
        "set1": [1, 2, 3],
        "set2": [4, 5, 6, 7, 8],
        "set3": [9, 10, 11, 12]
    };

var newary= [];
for (var x in obj) {
  if (obj.hasOwnProperty(x)) { //Thanks Magrangs for reference
     newary.push(x);
  };
};

console.log(newary[1])


/*For Modern Browser use this code*/

    // Retrieve All Keys of Object 
    Object.keys(obj);

    // Retrieve Specific Keys of Object
    Object.keys(obj)[1];

数据-你的js对象,i-成员索引

,问题是?@madalinivascu请检查编辑:)但我听说,键依赖于浏览器,不是所有浏览器都支持它?这是真的吗?是的,但是你可以用塑料填充。请参阅文章链接。不过,大多数现代浏览器都支持它。在推送之前添加hasOwnProperty检查更安全。否则它将迭代原型链的属性。这个解决方案在处理大量对象时会变得混乱。您将获得大量代码重复。@如果您创建了一个函数,则无需重复。实现这一点的功能已经存在于现代浏览器(只有一行代码)中,对于那些不使用polyfill的浏览器,可以使用polyfill。
    var obj = {
        "set1": [1, 2, 3],
        "set2": [4, 5, 6, 7, 8],
        "set3": [9, 10, 11, 12]
    };

var newary= [];
for (var x in obj) {
  if (obj.hasOwnProperty(x)) { //Thanks Magrangs for reference
     newary.push(x);
  };
};

console.log(newary[1])


/*For Modern Browser use this code*/

    // Retrieve All Keys of Object 
    Object.keys(obj);

    // Retrieve Specific Keys of Object
    Object.keys(obj)[1];
function getKey(data, i){
    var n = 0;
    for(var k in data){
        if(n == i) return k;
        n++;
    }
}