javascript - 从 JavaScript 中的值获取对象的分配变量名称
问题描述
对于诸如此类的对象,每个对象都有一些独特的值,例如 id:
const obj1 = {name:"John", id:"0"};
const obj2 = {name:"James", id:"1"};
const obj3 = {name:"Jessica", id:"2"};
我怎样才能找出哪个对象属于一个 id?
例如,我的 id 为“1”,函数应返回对象,在本例中为 obj2。
解决方案
对象没有名称,多个变量或属性可以引用同一个对象。因此,在一般情况下,不,您无法通过对象属性找到包含对象的“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 具有转换为true
或false
在预期使用布尔值时转换为布尔值的值的概念,转换为的值true
称为“真实值”,转换为false
的值称为“虚假值”。错误的值是0
, NaN
, null
, undefined
, ""
, 当然false
(document.all
由于复杂的历史原因也在浏览器上)。所有其他值都是真实的。
推荐阅读
- java - 在php中生成带有位置的真值表
- java - new 运算符总是返回相同的引用
- reactjs - 多选大纲变体属性不起作用
- angular - 在组件之间使用带参数的回调函数
- javascript - 如果对象值在javascript中为真,则迭代数组提取并添加到新列表
- python - Tkinter:使用 TopLevel 窗口的存在作为条件
- apache-flink - Apache Flink 依次写入多个接收器
- python - Flask-SQL 中的关联对象在 shell 中表现,但在网站上创建“非 JSONable”错误
- javascript - 如何将两个参数传递给第 3 方组件回调属性?
- python - 发布数据时将 ForeignKey 设置为特定模型