如果我有一个JS对象:
var foo = { 'bar' : 'baz' }
如果我知道foo有基本的键/值结构,但不知道键的名称,我怎么能得到它?为…在吗?$ . each () ?
如果我有一个JS对象:
var foo = { 'bar' : 'baz' }
如果我知道foo有基本的键/值结构,但不知道键的名称,我怎么能得到它?为…在吗?$ . each () ?
当前回答
给你的一句话:
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
其他回答
如果你想获得所有的键,ECMAScript 5引入了Object.keys。这只有较新的浏览器支持,但MDC文档提供了另一种实现(它也用于…顺便说一句):
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;
}
当然,如果你同时需要键和值,那么for。是唯一合理的解决办法。
给定你的对象:
var foo = { 'bar' : 'baz' }
获取bar,使用:
Object.keys(foo)[0]
要获得baz,请使用:
foo[Object.keys(foo)[0]]
假设只有一个对象
// 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"
}
参考MDN
您可以单独访问每个键,而无需迭代,如下所示:
var obj = { first: 'someVal', second: 'otherVal' };
alert(Object.keys(obj)[0]); // returns first
alert(Object.keys(obj)[1]); // returns second
我也遇到过同样的问题,这个方法很有效
//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[key];