获取对象数组's键
Get array of object's keys
我想以数组的形式获得JavaScript对象的键,可以是jQuery,也可以是纯JavaScript。
有没有比这更详细的方法?
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
使用Object.keys
:
var foo = {
'alpha': 'puffin',
'beta': 'beagle'
};
var keys = Object.keys(foo);
console.log(keys) // ['alpha', 'beta']
// (or maybe some other order, keys are unordered).
这是一个ES5功能。这意味着它可以在所有现代浏览器中工作,但不能在传统浏览器中工作。
ES5垫片具有Object.keys
的实现,您可以窃取
您可以使用jQuery的$.map
。
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' },
keys = $.map(foo, function(v, i){
return i;
});
当然,Object.keys()
是获取对象密钥的最佳方式。如果它在您的环境中不可用,可以使用示例中的代码对其进行简单的填充(除非您需要考虑您的循环将迭代原型链上的所有属性,这与Object.keys()
的行为不同)。
但是,您的示例代码。。。
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
jsFiddle。
可以修改。您可以在变量部分执行赋值。
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [], i = 0;
for (keys[i++] in foo) {}
jsFiddle。
当然,这种行为与Object.keys()
实际所做的(jsFiddle)不同。您可以简单地使用MDN文档中的填充程序。
如果您在这里寻找将n深度嵌套对象的键列为平面数组的东西:
const getObjectKeys = (obj, prefix = '') => {
return Object.entries(obj).reduce((collector, [key, val]) => {
const newKeys = [ ...collector, prefix ? `${prefix}.${key}` : key ]
if (Object.prototype.toString.call(val) === '[object Object]') {
const newPrefix = prefix ? `${prefix}.${key}` : key
const otherKeys = getObjectKeys(val, newPrefix)
return [ ...newKeys, ...otherKeys ]
}
return newKeys
}, [])
}
console.log(getObjectKeys({a: 1, b: 2, c: { d: 3, e: { f: 4 }}}))
我不知道有什么不太详细的,但我受到启发,通过一行请求将以下内容强制到一行上,但不知道它有多Python;)
var keys = (function(o){var ks=[]; for(var k in o) ks.push(k); return ks})(foo);
摘要
要获取对象的所有密钥,可以使用Object.keys()
。Object.keys()
将一个对象作为参数,并返回所有键的数组。
示例:
const object = {
a: 'string1',
b: 42,
c: 34
};
const keys = Object.keys(object)
console.log(keys);
console.log(keys.length) // we can easily access the total amount of properties the object has
在上面的例子中,我们在键const中存储了一个键数组。然后,我们可以通过检查键数组的长度来轻松访问对象上的属性数量。
使用Object.values()
获取值
CCD_ 10的互补功能是CCD_。此函数将对象作为参数,并返回一个值数组。例如:
const object = {
a: 'random',
b: 22,
c: true
};
console.log(Object.values(object));
2022年和JavaScript仍然没有一个健全的方法来处理哈希?
这会发出警告,但有效:
Object.prototype.keys = function() { return Object.keys(this) }
console.log("Keys of an object: ", { a:1, b:2 }.keys() )
// Keys of an object: Array [ "a", "b" ]
// WARN: Line 8:1: Object prototype is read only, properties should not be added no-extend-native
也就是说,扩展内置对象是有争议的。
如果你决定使用Undercore.js,你最好使用
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
_.each( foo, function( val, key ) {
keys.push(key);
});
console.log(keys);
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在Javascript中转换对象数组
- 在JavaScript中通过索引从对象数组中获取值
- Backbone虹吸以获取对象数组
- 如何在DataTables 2.1中迭代对象数组
- Javascript-根据赋值顺序,按键合并对象数组
- 将事件附加到对象/数组
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript在数组中获取对象数组中键的所有不同值
- 在对象数组中查找多个值的d3范围
- Undercore.js获取对象数组中键对象的值
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 如何通过json对象数组为嵌套对象赋值
- 如何循环通过2个对象数组并通过匹配id进行合并
- 为对象数组创建列表项
- 如何使用javascript合并两个对象数组
- JSON到对象数组,并向每个对象添加项
- 动态钻取嵌套的对象数组
- 如果对象取自数组,则不能访问属性