spr*_*man 167 javascript jquery
如果我有一个JS对象,如:
var foo = { 'bar' : 'baz' }
Run Code Online (Sandbox Code Playgroud)
如果我知道foo
有基本的键/值结构,但不知道键的名称,最简单的方法是什么?for ... in
?$.each()
?我希望有更好的东西......
Mic*_*nin 170
您将使用for循环在对象内部迭代:
for(var i in foo){
alert(i); // alerts key
alert(foo[i]); //alerts key's value
}
Run Code Online (Sandbox Code Playgroud)
要么
Object.keys(foo)
.forEach(function eachKey(key) {
alert(key); // alerts key
alert(foo[key]); // alerts value
});
Run Code Online (Sandbox Code Playgroud)
use*_*r01 95
您可以单独访问每个密钥而无需迭代,如下所示:
var obj = { first: 'someVal', second: 'otherVal' };
alert(Object.keys(obj)[0]); // returns first
alert(Object.keys(obj)[1]); // returns second
Run Code Online (Sandbox Code Playgroud)
Fel*_*ing 90
如果你想获得所有密钥,ECMAScript 5已经推出Object.keys
.这只有较新的浏览器支持,但MDC文档提供了另一种实现(也使用for...in
btw):
if(!Object.keys) Object.keys = function(o){
if (o !== Object(o))
throw new TypeError('Object.keys called on non-object');
var ret=[],p;
for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
return ret;
}
Run Code Online (Sandbox Code Playgroud)
当然,如果你想要两者,关键和价值,那么这for...in
是唯一合理的解决方案.
Ary*_*itz 57
鉴于你的对象:
var foo = { 'bar' : 'baz' }
Run Code Online (Sandbox Code Playgroud)
要获得bar
,请使用:
Object.keys(foo)[0]
Run Code Online (Sandbox Code Playgroud)
要获得baz
,请使用:
foo[Object.keys(foo)[0]]
Run Code Online (Sandbox Code Playgroud)
假设一个对象
Amj*_*d K 18
这是最简单易行的方法.这就是我们这样做的方式.
var obj = { 'bar' : 'baz' }
var key = Object.keys(obj)[0];
var value = obj[key];
console.log("key = ", key) // bar
console.log("value = ", value) // baz
Run Code Online (Sandbox Code Playgroud)
小智 18
一个一个班轮为您提供:
const OBJECT = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3',
'key4': 'value4'
};
const value = 'value2';
const key = Object.keys(OBJECT)[Object.values(OBJECT).indexOf(value)];
window.console.log(key); // = key2
Run Code Online (Sandbox Code Playgroud)
Chr*_*ris 15
我遇到了同样的问题,这是有效的
//example of an Object
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
};
//How to access a single key or value
var key = Object.keys(person)[0];
var value = person.firstName;
Run Code Online (Sandbox Code Playgroud)
aif*_*fin 13
// iterate through key-value gracefully
const obj = { a: 5, b: 7, c: 9 };
for (const [key, value] of Object.entries(obj)) {
console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
}
Run Code Online (Sandbox Code Playgroud)
请参阅MDN
Sah*_*kar 10
获取对象的键/值的最佳方法。
let obj = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3',
'key4': 'value4'
}
Object.keys(obj).map(function(k){
console.log("key with value: "+k +" = "+obj[k])
})
Run Code Online (Sandbox Code Playgroud)
既然您提到了$.each()
,这里有一个适用于 jQuery 1.6+ 的便捷方法:
var foo = { key1: 'bar', key2: 'baz' };
// keys will be: ['key1', 'key2']
var keys = $.map(foo, function(item, key) {
return key;
});
Run Code Online (Sandbox Code Playgroud)
最简单的方法是使用 Underscore.js:
钥匙
_.keys(object) 检索对象属性的所有名称。
_.keys({一: 1, 二: 2, 三: 3}); => [“一”、“二”、“三”]
是的,您需要一个额外的库,但这太容易了!
归档时间: |
|
查看次数: |
429379 次 |
最近记录: |