我有一个字符串,例如:
convert.lamp.stamp.glass.nose
我想创建一个对象键“ Nose ”(坦克对象已创建):
tank['convert']['lamp']['stamp']['glass']['nose']
我该怎么做?
我使用 split 得到了数组
values = 'convert.lamp.stamp.glass.nose'.split('.');
现在我不知道如何使用jquery的each方法来创建这些键。
最佳答案
您可以拆分字符串并将其用作对象的键。
该提案使用
-
String#split
-
Array#reduce
- 和默认值
v || {}
如果对象不存在。
var object = { convert: { lamp: { stamp: { glass: { nose: 42 } } } } },
path = 'convert.lamp.stamp.glass.nose',
value = path.split('.').reduce(function (v, k) {
return (v || {})[k];
}, object);
console.log(value);
ES6
var object = { convert: { lamp: { stamp: { glass: { nose: 42 } } } } },
path = 'convert.lamp.stamp.glass.nose',
value = path.split('.').reduce((v, k) => (v || {})[k], object);
console.log(value);
要使用给定的键创建对象,您可以使用此
var object = {},
path = 'convert.lamp.stamp.glass.nose'.split('.'),
last = path.pop();
path.reduce(function (o, k) {
o[k] = o[k] || {};
return o[k];
}, object)[last] = 42;
console.log(object);
ES6
var object = {},
path = 'convert.lamp.stamp.glass.nose'.split('.'),
last = path.pop();
path.reduce((o, k) => o[k] = o[k] || {}, object)[last] = 42;
console.log(object);
关于javascript - JS 将字符串转换为多维对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39061790/