javascript - 将数组转换为对象(指现有的帖子)

标签 javascript arrays object

我指的是这个已回答的问题 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/

相关文章:

javascript - 访问动态创建的对象..js

PHP 静态与实例

JavaScript、nodejs : give a "string not found" messege on console. 日志

php - 将仅包含数字的字符串转换为 INT

php - 尝试为bcrypt哈希算法指定成本基准时,出现解析错误?

c - 将 NULL 指针的常量数组分配给结构数组内结构中的数组

javascript - 将长的 JavaScript 数组传递给代码隐藏?

javascript - 如何使用JS获取href值?

javascript - Phonegap 1.0 Android 捕获视频

javascript - 使用 java 脚本和 JQuery 来显示消息而不是抛出异常