Lodash String + Array

时间:2016-08-31 10:43:48

标签: javascript lodash

我正在学习lodash并查看了大量的文档,并为此寻找解决方案:

const r = 'ABCD';
const s = ['1', '2', '3', '4'];

我希望最终的返回值为:

['A1', 'B2', 'C3', 'D4']

我主要担心的是表现。它必须快!对于~56k的列表,我所需要的大约需要2500-3000毫秒。

更新: 我做的是:

[`${r[0]}${s[0]}`, `${r[1]}${s[1]}`, `${r[2]}${s[2]}`, `${r[3]}${s[3]}`]

感谢您的建议。我尝试了_.map和原生地图,我对它们的速度有多惊讶...

字符串模板耗时2.5秒

lodash mapping r耗时4.5s

lodash mapping s花了13s

原生地图r需要5s

原生地图花了15秒

我真的希望我能把它降到1s ..

2 个答案:

答案 0 :(得分:2)

您可以使用原生方法Array#map

var r = 'ABCD',
    s = ['1', '2', '3', '4'],
    mapped = s.map((a, i) => r[i] + a);

console.log(mapped);

答案 1 :(得分:0)

我更喜欢原生的js技术。

var r = 'ABCD',
    s = ['1', '2', '3', '4'],
var mapped = [];
for(var i = 0 ; i<s.length; i++) {
  mapped.push('' + r[i] + s[i]);
}
console.log(mapped);

或者您可以使用js map函数。

var r = 'ABCD',
    s = ['1', '2', '3', '4'],
    mapped = s.map((a, i) => r[i] + a);

console.log(mapped);