首页 > 解决方案 > 从 JavaScript 中的值获取对象的分配变量名称

问题描述

对于诸如此类的对象,每个对象都有一些独特的值,例如 id:

const obj1 = {name:"John", id:"0"};
const obj2 = {name:"James", id:"1"};
const obj3 = {name:"Jessica", id:"2"};

我怎样才能找出哪个对象属于一个 id?

例如,我的 id 为“1”,函数应返回对象,在本例中为 obj2。

标签: javascriptobject

解决方案


对象没有名称,多个变量或属性可以引用同一个对象。因此,在一般情况下,不,您无法通过对象属性找到包含对象的“the”变量,因为可能有多个(并且因为没有真正找到它们的好方法)。

如果你把这些对象放在一个数组中,你可以很容易地找到对象id = "1"

const objects = [
    {name:"John", id:"0"},
    {name:"James", id:"1"},
    {name:"Jessica", id:"2"},
];
// To find it:
const result1 = objects.find(object => object.id === "1");
console.log(result1);
// Or more generally:
function findById(array, id) {
    return array.find(object => object.id === id);
}
const result2 = findById(objects, "1");
console.log(result2);

find循环调用你的回调的数组,并返回第一个对象,回调返回一个真实值¹(或者undefined如果回调从不返回真实值)。(当然,可能不止一个,但find只返回第一个。)


¹ “真实值” - JavaScript 具有转换为truefalse在预期使用布尔值时转换为布尔值的值的概念,转换为的值true称为“真实值”,转换为false的值称为“虚假值”。错误的值是0, NaN, null, undefined, "", 当然falsedocument.all由于复杂的历史原因也在浏览器上)。所有其他值都是真实的。


推荐阅读