我指的是这个已回答的问题 Convert Array into Object .特别是@JVE999 的回答。由于我的声誉太低而无法对答案发表评论,因此我提出了一个新问题。
我不明白这段代码。它在我的代码中就像一个魅力,但我只是不明白为什么。我能否简要了解每一行的作用以及它实际上如何将数组转换为对象?
var convArrToObj = function(array){
var thisEleObj = new Object();
if(typeof array == "object"){
for(var i in array){
var thisEle = convArrToObj(array[i]);
thisEleObj[i] = thisEle;
}
}else {
thisEleObj = array;
}
return thisEleObj;
}
最佳答案
因为我不确定你知道什么或不知道什么,所以我会尽量解释每一行:
var convArrToObj = function(array){
定义一个带有单个参数的函数,array
.
var thisEleObj = new Object();
使用构造函数初始化一个新对象。 var thisEleObj = {};
也有效。
if(typeof array == "object"){
确保输入是数组或对象。如果您知道输入将是一个数组或一个对象并且您不需要递归(请参阅第 5 行),那么这并不是绝对必要的。
for(var i in array){
遍历对象中的每个“键”。在数组中,键都是数字且按数字顺序排列,因此 for(var i=0;i<array.length;i++){
将是仅支持数组的类似版本。
var thisEle = convArrToObj(array[i]);
这是最聪明的部分,也可能是最不清楚的部分。它检查对象的目标属性(或数组的索引)是否是数组本身,如果是,则将其复制为对象。
thisEleObj[i]=thisEle
是通过复制 thisEle
来“完成所有工作”的部分(转换后的数组)到数组。
else { thisEleObj=array}
不会费心处理数字(通常没有属性)或函数(具有不应处理的属性)之类的数据类型
return thisEleObj
由于递归,将处理后的对象输出到赋值/另一个函数/自身的另一个调用。
希望这对您有所帮助,请告诉我是否有任何需要澄清的地方。
关于javascript - 将数组转换为对象(指现有的帖子),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49176198/