假设我有这样的数据

data = {
     personal : {
           sport : "Football"
     }
}


我尝试提取字符串。这行得通

let str1 = "personal"
let str2 = "sport"
console.log(data[str1][str2])


问题我有一个更多的字符串。每个字符串是如此不同。我如何才能为每个字符串使用一个。

let str_1 = "personal.sport"
let str_2 = "personal.sport.xxx"
let str_3 = "personal.aaa.sport.xxx"
.....
..
let str_n = "bbb.ccc.ddd"


console.log(data[str_1])
console.log(data[str_2])
console.log(data[str_3])
....
...
console.log(data[str_n])


谢谢。

最佳答案

我不能完全确定我明白您的意思,但这是您所追求的吗?



var data = {
  personal: {
    sport: "Football"
  }
};

let str_1 = "personal.sport";
let str_2 = "personal.sport.xxx";
let str_3 = "personal.aaa.sport.xxx";

function getValue(path) {
  var obj = data;
  var props = path.split(".");

  for (const prop of props) {
    obj = obj[prop];

    if (!obj)
      return obj;
  }

  return obj;
}

console.log(getValue(str_1))

关于javascript - 我如何才能将变量用作对象名称(子对象的情况),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49725558/

10-10 04:40