javascript - 如何使用数组和 map 函数构建 javascript 对象?

标签 javascript

我有一个 channel 数组,我想将其转换成一个单个对象 (channelSettings),每个 channel 都有一个 true/false 属性

我已经使用下面的代码让它工作了,但它看起来很冗长。如果没有“临时”变量,有没有办法做到这一点?如果我可以驾驭它,那么我也可以驾驭自执行功能。

var channels = ["TV", "Billboard", "Spot TV"];


var channelSettings = function() {
    var temp = {};

    channels.map(function(itm, i, a) {
        var channel = itm.toLowerCase().replace(" ", "");
        temp[channel] = false;
    });

    return temp;
}();

我想我正在尝试让 map 函数返回一个具有属性的对象而不是一个数组。这可能吗?是误导了吗?有什么建议吗?

这就是我希望它最终看起来的样子:

var channels = ["TV", "Billboard", "Spot TV"];

var channelSettings = channels.map(function(itm, i, a) {
        var channel = itm.toLowerCase().replace(" ", "");
        return ????;
});

最佳答案

改用 .reduce() 函数。

var channelSettings = channels.reduce(function(obj, itm) {
        var channel = itm.toLowerCase().replace(" ", "");
        obj[channel] = false;

        return obj;
}, {});

演示: http://jsfiddle.net/MjW9T/


第一个参数引用之前返回的项目,除了第一次迭代,它引用数组中的第一个项目,或者我们作为空对象提供的种子项目。

第二个参数引用数组中的当前值。只要我们始终返回 obj,第一个参数将始终是该对象,最终返回值也是如此。

关于javascript - 如何使用数组和 map 函数构建 javascript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11006748/

相关文章:

javascript - jQuery 文件上传的用户系统

javascript - 动画 SVG 路径

javascript - 在actioncreator/selector中获取路由参数?

Javascript 正则表达式检查卡住网页

javascript - jquery div 内容没有改变

javascript - 单击外部 div 和 sibling 时隐藏 div

javascript - 发送到房间,并使用每个套接字的单独属性作为参数

javascript - linux 上的 phantomjs 返回空的 html 源

javascript - 添加超链接时如何保持图像缩放

javascript - 在 Three.js 中无法让尾部摇摆(动画)?