将js数组转换为字典映射
Converting js array into dictionary map
我有这个数组:
["userconfig", "general", "name"]
我希望它看起来像这个
data_structure["userconfig"]["general"]["name"]
我试过这个功能:
inputID = "userconfig-general-name"
function GetDataByID(inputID){
var position = '';
for (var i = 0; i < inputID.length; i++) {
var hirarchy = inputID[i].split('-');
for (var index = 0; index < hirarchy.length; index++) {
position += '["'+ hirarchy[index] +'"]';
}
}
return data_structure[position];
}
而CCD_ 1是阵列。我得到的[position]
是一个字符串,它工作不好。
如何制作一个js函数,通过数组动态构建对象路径?
var arr = ["userconfig", "general", "name"];
var dataStructure = arr.reduceRight(function (value, key) {
var obj = {};
obj[key] = value;
return obj;
}, 'myVal');
最终为:
{ userconfig : { general : { name : 'myVal' } } }
请注意,reduceRight
方法可能需要polyfill:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ReduceRight
下面的函数将使用一个要修改的对象和一个填充了所需属性的数组:
function objPath(obj,path){
path.forEach(function(item){
obj[item] = {};
obj = obj[item];
});
}
var myobj = {};
objPath(myobj,["test","test2","test3"]);
console.log(myobj);
//outputs
Object {test: Object}
test: Object
test2: Object
test3: Object
函数在数组上循环,将新对象属性创建为新对象。然后,它将对新对象的引用放入obj
中,以便可以对新对象生成下一个属性。
JSFiddle
递归函数
var array = ["userconfig", "general", "name"];
function toAssociative(array) {
var index = array.shift();
var next = null;
if (array.length > 0) {
next = toAssociative(array);
}
var result = new Array();
result[index] = next;
return result;
}
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- ng映射方向备选方案
- 无法通过数组映射绑定
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 使用Scala Play Framework视图中的键检索映射值
- python到“;流“;字典处理
- 无法为打字稿字典赋值
- 淘汰映射;不起作用
- 映射数组ES6时考虑空值
- Lodash映射并返回唯一
- 如何对映射插件创建的敲除对象进行深度复制
- 在javascript中按映射中的值排序
- 使用带有两个参数的函数的javascript映射
- 在内部映射值时渲染方法中断
- 如何将DOM标记映射到字典
- 如何在 reactJS 中映射字典
- 什么c对象被映射到js字典
- 将js数组转换为字典映射
- 查找映射/字典的值