我遇到一些js代码问题,希望你能帮助我
我有一个这样的数组:
var object = {
one : {
'first' : 'value1',
'second' : 'value2'
'third' : {
'first' : 'value1',
'second' : 'value2'
}
}
...
}
像一个字符串:
var string = 'one.third.second'
所以,我的问题是 - 如何使用字符串中的键来编辑对象的值?
谢谢!
答案 0 :(得分:0)
嗯,我肯定无法找到我之前的答案,也许这是我的想象。
你可以使用这个答案中的技巧来做到这一点,但是当你到达最后一个键而不是获取值时,记住最后一个对象并进行赋值:
Object.setByString = function(o, s, value) {
s = s.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
s = s.replace(/^\./, ''); // strip a leading dot
var a = s.split('.');
for (var i = 0, n = a.length - 1; i < n; ++i) {
var k = a[i];
if (k in o) {
o = o[k];
} else {
return;
}
}
o[a[a.length - 1]] = value;
};
var obj = {
one : {
'first' : 'value1',
'second' : 'value2',
'third' : {
'first' : 'value1',
'second' : 'value2'
}
}
};
var string = 'one.third.second';
Object.setByString(obj, string, 42);
snippet.log(JSON.stringify(obj, null, 2));
&#13;
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;