仅通过属性值获取对象

时间:2017-04-19 00:00:50

标签: javascript object

让我们假设我有一个传递给函数的对象属性。在这种情况下,“名称”中填充了'myObject.name'(其值为'Tom') - 因此基本上'Tom'将作为“名称”传递给函数

function(name) {
    do something //non-essential for my question
}

是否可以通过获取信息'Tom'来获取'Tom'属性的对象?基本上我希望得到myObject

谢谢:)

3 个答案:

答案 0 :(得分:0)

不,那是不可能的。

该函数知道的一切是它的一个参数指向字符串" Tom",而不是指向内存中其他地方的那个字符串。

答案 1 :(得分:0)

您可以在数组中存储对象,过滤数组以将对象的属性名称与使用for..of循环传递给函数的参数匹配,Object.entries()返回属性数组,对象的值

const data = Array();

const setObjectPropertyName = _name => {
    data.push({[_name]:_name});
    return data
}

const getObjectByPropertyName = prop => {
  let res = `${prop} property not found in data`;
  for (let obj of data) {
    for (let [key] of Object.entries(obj)) {
      if(key === prop) return obj;
    }
  }
  return res;
}

let s = setObjectPropertyName("Tom");
let g = getObjectByPropertyName("Tom");
let not = getObjectByPropertyName("Tome");

console.log(s,"\n", g, "\n", not);

答案 2 :(得分:0)

免责声明:你绝对不应该这样做。我只是发布这个,因为它实际上是可能的(有一些警告),只是真的不可取。

假设它在浏览器中运行并且它全部在全局范围内运行(如在脚本标记中),您可以在技术上迭代{{1对象,检查窗口中的任何对象的name属性,并确定它们的name属性是否与传递给你的函数的名称相匹配。



window