【问题标题】:Oneliner to create a map from an array of maps in JS/ExtJS 4Oneliner 从 JS/ExtJS 4 中的地图数组创建地图
【发布时间】:2013-04-25 20:00:16
【问题描述】:

是否可以从一组地图在一行中创建地图。使用纯 JS 还是 ExtJS 4.0?

示例输入

[{key:"US", value:"United States"}, {key:"JO", value:"Jordan"}, {key:"PA", value: "Palestine"}, {key:"CA", value:"Canada"}]

预期输出

{"US":"United States", "JO": "Jordan", "PA":"Palestine", "CA":"Canada"}

注意:我知道 Ext.Array.map 存在,但我不知道它是否可以返回数组以外的其他类型。

【问题讨论】:

    标签: javascript arrays extjs map


    【解决方案1】:

    使用JS原生的reduce [MDN]方法:

    var obj = arr.reduce(function(obj, val) {
        obj[val.key] = val.value;
        return obj;
    }, {});
    

    不是单线,但仍然紧凑。您可以将回调的主体替换为

    return obj[val.key] = val.value, obj;
    

    但这对于不了解逗号运算符的人来说可能有点晦涩。

    作为替代方案,您可以只遍历数组:

    var obj = {};
    
    for (var i = 0, l = arr.length; i < l; i++) {
        obj[arr[i].key] = arr[i].value;
    }
    

    【讨论】:

    • 跨浏览器使用安全吗?
    • 该链接包含一个表格,其中列出了本机支持它的浏览器。它还提供了一个 polyfill。好像ExtJS没有这样的方法。
    • 我查看了 ExtJS 文档,它实际上将 reduce 列为原生数组方法。我不知道,如果它不存在,也许它正在提供该方法。 docs.sencha.com/extjs/4.0.7/#!/api/Array
    猜你喜欢
    • 1970-01-01
    • 2020-11-05
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2014-02-13
    • 1970-01-01
    相关资源
    最近更新 更多