字符串数组的逐元素拼接

3
我正在寻找一个JavaScript函数,它接受两个相同长度的字符串数组,并输出一个与输入数组长度相同的单个字符串数组,该数组包含输入数组中逐元素连接的字符串。是否有内置的JavaScript函数可以执行此操作?
另外,当进行逐元素连接时,我想在连接的元素之间添加一个字符串。例如,对于每个 i,这将是真实的:
outputArray[i] = inputArray1[i] + " - " + inputArray2[i]

2
从您发布的示例中,如果您正在循环遍历输入数组,则已经有一个可行的解决方案。 - Adam H
我正在寻找一个函数。 - Josh Withee
1
步骤1:将您现在正在使用的代码移入一个函数中 步骤2:调用该函数 步骤3:获利 - Adam H
没有内置的函数可以执行这个特定的操作。它被称为“zip”。在js标准库中,最接近的东西是像Nina发布的reduce。你完全可以自己编写一个zip函数。 - Dan
1个回答

6

您可以使用单个数组来缩小数组。这也适用于多个数组。

var inputArray1 = ['abc', 'def', 'ghi'],
    inputArray2 = ['3', '6', '9'],
    outputArray = [inputArray1, inputArray2].reduce((a, b) => a.map((v, i) => v + ' - ' + b[i]));

console.log(outputArray);

更多功能

var inputArray1 = ['abc', 'def', 'ghi'],
    inputArray2 = ['3', '6', '9'],
    outputArray = [inputArray1, inputArray2]
        .reduce((a, b) => a.map((v, i) => [].concat(v, b[i]))) // get single parts
        .map(a => a.join(' - '));                              // join inner arrays

console.log(outputArray);


他要求一个函数,如下:concatStrings = (a, b) => { return [a, b].reduce((a, b) => a.map((v, i) => v + '-' + b[i])); } - Sivcan Singh
这正是我正在寻找的!谢谢。我的主要需求是一个一行代码,在Chrome Dev Tools的javascript控制台中易于使用。 - Josh Withee
1
@Marathon55,提醒一下,你可以在Chrome Dev Tools控制台中运行多行脚本,我经常这样做。这与你的问题或答案无关,但这是我想传递的一个小贴士。 - Adam H
有没有特定的原因需要使用.reduce()呢?在我看来,这个函数本身可以简单地使用map工作,对吧?像这样merge = (a,b) => {return a.map(val, ind) => val + "-" + b[ind]);} - dennlinger
正确的方式是使用map,但需要在回调函数中引用其他数组。更好的方法是将所有必要的数组收集到另一个数组中,并从该数组获取结果,因为这样很容易扩展更多的数组。 - Nina Scholz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接