在JS中获取具有未知单个键的对象的值

时间:2015-08-25 16:07:40

标签: javascript javascript-objects

如何获取具有未知单个键的对象的值?

示例:

var obj = {dbm: -45}

我想在不知道密钥的情况下获得-45值。

我知道我可以遍历对象键(总是一个)。

for (var key in objects) {
    var value = objects[key];
}

但我想知道是否有更清洁的解决方案?

2 个答案:

答案 0 :(得分:12)

Object.keys可能是一个解决方案:

Object.keys({ dbm: -45}); // ["dbm"]

for-in和Object.keys之间的区别在于Object.keys返回所有自己的键名,而for-in可用于迭代对象的所有自己和继承的键名。

正如James Brierley在下面评论的那样,您可以这种方式分配对象的未知属性:

var obj = { dbm:-45 };
var unkownKey = Object.keys(obj)[0];
obj[unkownKey] = 52;

但是你必须记住,分配一个Object.keys以某种顺序返回键名的属性可能容易出错。

答案 1 :(得分:5)

现在有一个新选项:Object.values。因此,如果您知道,该对象将只有一个属性:

const array = Object.values(obj)[0];

实时示例:

const json = '{"EXAMPLE": [ "example1","example2","example3","example4" ]}';
const obj = JSON.parse(json);
const array = Object.values(obj)[0];
console.log(array);

如果您还需要知道属性的名称,可以使用Object.entries并进行销毁:

const [name, array] = Object.entries(obj)[0];

实时示例:

const json = '{"EXAMPLE": [ "example1","example2","example3","example4" ]}';
const obj = JSON.parse(json);
const [name, array] = Object.entries(obj)[0];
console.log(name);
console.log(array);