我有这样的数据结构:
var someObject = {
'part1' : {
'name': 'Part 1',
'size': '20',
'qty' : '50'
},
'part2' : {
'name': 'Part 2',
'size': '15',
'qty' : '60'
},
'part3' : [
{
'name': 'Part 3A',
'size': '10',
'qty' : '20'
}, {
'name': 'Part 3B',
'size': '5',
'qty' : '20'
}, {
'name': 'Part 3C',
'size': '7.5',
'qty' : '20'
}
]
};
Run Code Online (Sandbox Code Playgroud)
我想使用这些变量访问数据:
var part1name = "part1.name";
var part2quantity = "part2.qty";
var part3name1 = "part3[0].name";
Run Code Online (Sandbox Code Playgroud)
part1name应该用someObject.part1.name's值填充,即"Part …
假设我们只被给予
var obj = {};
var propName = "foo.bar.foobar";
Run Code Online (Sandbox Code Playgroud)
我们如何将属性obj.foo.bar.foobar设置为某个值(比如"hello world")?所以我想实现这一点,而我们只在字符串中有属性名称:
obj.foo.bar.foobar = "hello world";
Run Code Online (Sandbox Code Playgroud) 给定对象属性路径的字符串,如何动态设置此属性.
给定此示例对象:
var obj = {
a: {
b: [ { c: 'Before' } ]
}
};
Run Code Online (Sandbox Code Playgroud)
它应该能够使用这样的辅助函数设置值:
setToValue(obj, 'After', 'a.b.0.c');
Run Code Online (Sandbox Code Playgroud)
我用以下代码尝试了它.但如果变量不是引用,则父级是副本.
function setToValue(obj, value, path) {
var arrPath = path.split('.'),
parent = obj;
for (var i = 0, max = arrPath.length; i < max; i++) {
parent = parent[arrPath[i]];
}
parent = value;
}
Run Code Online (Sandbox Code Playgroud) 我有以下字符串:
const str = "prop1.prop2.prop3"
Run Code Online (Sandbox Code Playgroud)
我想使用这个字符串来访问以下对象的属性 prop3:
const obj = {
prop1: {
prop2:{
prop3:{
// ---- destination point
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我不知道该怎么做?一定有什么东西不断地添加obj[currentProp]等等。还有..没有更快的方法吗?我担心我把时间浪费在更容易实现的事情上