我有这样的物体:
const obj1 = {name:"John", id:"0"}; const obj2 = {name:"James", id:"1"}; const obj3 = {name:"Jessica", id:"2"};
是否可以从属性值获取对象的名称?例如,我有它的id,想知道它属于哪个对象,所以“1”会给我“obj2”
kadbb4591#
对象没有名称,并且多个变量或属性可以引用同一对象。因此,在一般情况下,不,您无法通过对象属性找到包含对象的“the”变量,因为可能有多个变量(并且没有找到它们的好方法)。如果将这些对象放在数组中,则可以轻松找到具有 id = "1" :
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` 循环调用回调函数的数组,并返回回调函数返回的第一个对象的truthy值(或) `undefined` 如果回调从未返回真实值)(当然,可能不止一个,但是 `find` 只返回第一个。) “”“truthy value”-javascript的概念是将值转换为 `true` 或 `false` 在需要布尔值的地方使用时,转换为 `true` 被称为“真实的”,以及那些皈依 `false` 被称为“falsy”。falsy值是 `0` , `NaN` , `null` , `undefined` , `""` ,当然 `false` (也 `document.all` 在浏览器上,由于复杂的历史原因)。所有其他价值观都是真实的。
pjngdqdw2#
您可以将它们放置在一个数组中,然后在该数组上迭代搜索所需的字段。
x4shl7ld3#
你为什么不把你的对象做成一个数组,然后搜索你想要的索引呢?仅举几个例子,假设您的对象如下所示:
const objects = [ {name:"John", id:"0"}, {name:"James", id:"1"}, {name:"Jessica", id:"2"}, ]; ``` `<Array>.find()` ``` objects.find((e) => e.id === "1");
const objects = [ {name:"John", id:"0"}, {name:"James", id:"1"}, {name:"Jessica", id:"2"}, ]; const result = objects.find((e) => e.id === "1"); console.log(result); ``` `<Array>.filter()` ``` objects.filter((e) => e.id === "1")[0];
const objects = [ {name:"John", id:"0"}, {name:"James", id:"1"}, {name:"Jessica", id:"2"}, ]; const result = objects.filter((e) => e.id === "1")[0]; console.log(result); ``` `<Array>.reduce()` ``` objects.reduce((acc, curr) => (curr.id === "1") ? curr : acc);
const objects = [ {name:"John", id:"0"}, {name:"James", id:"1"}, {name:"Jessica", id:"2"}, ]; const result = objects.reduce((acc, curr) => (curr.id === "1") ? curr : acc); console.log(result); ``` `<Array>.some()` ``` let result; objects.some((e) => e.id === "1" && (result = e));
const objects = [ {name:"John", id:"0"}, {name:"James", id:"1"}, {name:"Jessica", id:"2"}, ]; let result; objects.some((e) => e.id === "1" && (result = e)); console.log(result);
3条答案
按热度按时间kadbb4591#
对象没有名称,并且多个变量或属性可以引用同一对象。因此,在一般情况下,不,您无法通过对象属性找到包含对象的“the”变量,因为可能有多个变量(并且没有找到它们的好方法)。
如果将这些对象放在数组中,则可以轻松找到具有
id = "1"
:pjngdqdw2#
您可以将它们放置在一个数组中,然后在该数组上迭代搜索所需的字段。
x4shl7ld3#
你为什么不把你的对象做成一个数组,然后搜索你想要的索引呢?
仅举几个例子,假设您的对象如下所示: