Ric*_*ard 338 javascript ecmascript-5
我希望将JavaScript对象的键作为数组,在jQuery或纯JavaScript中.
有没有比这更简洁的方式?
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
Run Code Online (Sandbox Code Playgroud)
Ray*_*nos 579
var foo = {
'alpha': 'puffin',
'beta': 'beagle'
};
var keys = Object.keys(foo);
console.log(keys) // ['alpha', 'beta']
// (or maybe some other order, keys are unordered).Run Code Online (Sandbox Code Playgroud)
使用Object.keys.
这是ES5功能.这意味着它适用于所有现代浏览器,但不适用于旧版浏览器.
ES5-shim有一个你可以偷的实现Object.keys
Roc*_*mat 59
你可以使用jQuery $.map.
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' },
keys = $.map(foo, function(v, i){
return i;
});
Run Code Online (Sandbox Code Playgroud)
ale*_*lex 32
当然,这Object.keys()是获取Object键的最佳方式.如果它在您的环境中不可用,则可以使用代码(例如在您的示例中)进行简单的填充(除非您需要考虑您的循环将迭代原型链上的所有属性,这与Object.keys()行为不同).
但是,你的示例代码......
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
Run Code Online (Sandbox Code Playgroud)
......可以修改.您可以在变量部分中进行分配.
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [], i = 0;
for (keys[i++] in foo) {}
Run Code Online (Sandbox Code Playgroud)
当然,这种行为与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 }}}))Run Code Online (Sandbox Code Playgroud)
我不知道更少冗长,但我受到启发,通过单线请求将以下内容强制到一行,不知道它是如何Pythonic;)
var keys = (function(o){var ks=[]; for(var k in o) ks.push(k); return ks})(foo);
Run Code Online (Sandbox Code Playgroud)
要获取对象的所有键,您可以使用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 hasRun Code Online (Sandbox Code Playgroud)
在上面的示例中,我们将键数组存储在键 const 中。然后,我们可以通过检查键数组的长度轻松访问对象上的属性数量。
Object.values()的互补函数Object.keys()是Object.values()。该函数接受一个对象作为参数并返回一个值数组。例如:
const object = {
a: 'random',
b: 22,
c: true
};
console.log(Object.values(object));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
359523 次 |
| 最近记录: |