请问怎么封装下面的javascript代码比较好呢?
大家讲道理
大家讲道理 2017-04-11 11:29:28
[JavaScript讨论组]

我想把下面数colOne和数组colTwo封装成数组cols的,代码如下:


var colOne = [
    [
        'account',
        'accountName'
    ],
    [
        'wxHead',
        'wxHeadImage'
    ],
    [
        'name',
        'username',
        'abc'
    ]
];

var colTwo = ['field', 'title','formatter'];

var cols = [
    {
        field: 'account',
        title: 'accountName'
    }, {
        field: 'wxHead',
        title: 'wxHeadImage'
    }, {
        field: 'name',
        title: 'username',
        formatter: 'abc'
    }];

请问怎么封装比较好呢?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
巴扎黑

试试我这招:

var result = colOne.map(col => colTwo.reduce((p, k, i) => (col[i] && (p[k] = col[i]), p), {}));

console.log(result);//[ { field: 'account', title: 'accountName' },  { field: 'wxHead', title: 'wxHeadImage' },  { field: 'name', title: 'username', formatter: 'abc' } ]

备注:

这招属于map和reduce的组合技

天蓬老师

@leftstick 大神啊!,太牛逼了,把他的方案翻译了一下

var result = colOne.map(function(oneItem) {
    return colTwo.reduce(function(res, twoItem, i) {
        oneItem[i] && (res[twoItem] = oneItem[i]);
        return res;
    }, {});
})
PHP中文网

colOne.map( x => x.reduce( (p, v, i) => {p[colTwo[i]]=v; return p}, {}))

自己想的,写完发现和leftstick重了,不过也属于理所当然的答案

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号