我有这样的数据结构:
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 …
给定一个JS对象
var obj = { a: { b: '1', c: '2' } }
Run Code Online (Sandbox Code Playgroud)
和一个字符串
"a.b"
Run Code Online (Sandbox Code Playgroud)
如何将字符串转换为点符号,以便我可以去
var val = obj.a.b
Run Code Online (Sandbox Code Playgroud)
如果字符串只是'a'我可以使用,'a'但这更复杂.我想有一些简单的方法,但它目前逃脱了.
如果我使用变量作为键,如何访问多级属性?
这不起作用:
var obj = {
first: {thirst: "yo"},
second: {beckon: "dud"}
}
var key = "first.thirst";
var result = obj[key];
Run Code Online (Sandbox Code Playgroud) 我有一个数组,这是一个键列表:['one', 'two', 'three'].
我需要生成一个以下格式的对象:
{
path: 'one',
nested: {
path: 'two',
nested: {
path: 'three'
}
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试了几种方法,但它们看起来很混乱(我有一种方法可以使用,while(current = array.pop())但它需要几个条件来处理第一个和最后一个元素.
有一个更整洁的递归策略吗?
我知道我在这里遗漏了一些明显的东西,但假设我有一个如下所示的 JSON 对象:
testObj = {
levelOne: {
levelTwo: []
}
}
Run Code Online (Sandbox Code Playgroud)
我还有一个字符串值:
var prop = 'levelOne.levelTwo';
Run Code Online (Sandbox Code Playgroud)
我正在尝试确定是否有任何方法可以基本上做这样的事情:
var x = testObj[prop];
Run Code Online (Sandbox Code Playgroud)
这行不通,但是有什么办法可以做到同等的效果吗?
我试图弄清楚如何用方括号替换点表示法中的字符串:
emergency.1.phone.2
Run Code Online (Sandbox Code Playgroud)
应转换为:
emergency[1][phone][2]
Run Code Online (Sandbox Code Playgroud)
我正在尝试使其具有动态性,因此无论存在多少个点,它都将转换字符串。
我在eval()上听到了很多不同的意见,并且有点不确定在这种情况下是否可以使用eval():
假设我有一个这样的对象:
var bla = {
blubb: function (callback) {
//GET some stuff via ajax
//call the callback
}
}
Run Code Online (Sandbox Code Playgroud)
和这样的字符串:
var someString = "bla.blubb";
Run Code Online (Sandbox Code Playgroud)
为了调用函数(和回调函数)来评估字符串是不是很邪恶?
var callMe = eval(someString)
callMe(function(){
alert('yay')!
});
Run Code Online (Sandbox Code Playgroud)