1. 已知一个对象obj,和一个str,如下:
const obj = {
a: {
b: {
c: "c",
},
},
};
const str = "a.b.c";
现在要根据str来获取obj中的内容,返回obj.a.b.c的值"c"。如果str为a.b,则返回obj.a.b的值{ c: "c" }。
答案
const obj = {
a: {
b: {
c: "c",
},
},
};
const str = "a.b.c";
const res = str.split(".").reduce((accu, cur) => accu[cur], obj);
2. 升级一下上面的题目:
const obj = {
a: {
b: [
{
c: "c",
},
],
},
};
const str = "a.b[0].c";
取obj.a.b[0].c的值。
答案
const str = 'a.b[0].c';
const res = str.split(/\[(\w+)\]|\./)
.filter(i => i)
.reduce((accu, cur) => accu[cur], obj)