获取 JSON 值,其中键以点表示法作为 JS 中的文本

Bis*_*uju 0 javascript json object

我有以下 JSON。

let carStr = `{
  "_id": "Tesla-200",
  "Design": {
    "Wheel": "Black",
    "Seat": "4",
    "Speed": "200"
  }
}`;
let car = JSON.parse(carStr);


let key = "Design.Wheel";


let keys = key.split(".");
let value = car[keys[0]][keys[1]]; // Need to get this value dynamically rather than hard-coding
console.log(value);
Run Code Online (Sandbox Code Playgroud)

密钥是从另一个部分输入的。如何通过动态传递键“Design.Wheel”作为文本来获取值“Black”。

Jac*_*ord 5

如果问题是密钥字符串的长度是动态的,则reduce在每个阶段使用并访问该值:

let carStr = `{
  "_id": "Tesla-200",
  "Design": {
    "Wheel": "Black",
    "Seat": "4",
    "Speed": "200"
  }
}`;
let car = JSON.parse(carStr);

let key = "Design.Wheel";
let keys = key.split(".");

let value = keys.reduce((a, c) => a[c], car);

console.log(value);

key = "Design.Seat";
keys = key.split(".");

value = keys.reduce((a, c) => a[c], car);

console.log(value);

key = "_id";
keys = key.split(".");

value = keys.reduce((a, c) => a[c], car);

console.log(value);
Run Code Online (Sandbox Code Playgroud)

只要您始终从根开始(即第一个属性始终可以直接访问为car.prop1.