在JQUERY中使用JavaScript对象的索引检索该对象的键
我有一个像这样的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
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++;
}
}