【问题标题】:Elementwise concatenation of string arrays字符串数组的元素级联
【发布时间】:2018-08-02 18:56:11
【问题描述】:

我正在寻找一个 JavaScript 函数,它接受两个长度相等的字符串数组并输出一个与输入数组长度相同的字符串数组,其中包含输入数组的元素级联字符串。是否有内置的 JavaScript 函数可以做到这一点?

另外,当元素级连接完成时,我想在连接的元素之间添加一个字符串。例如,这样对于每个i 都是如此:

outputArray[i] = inputArray1[i] + " - " + inputArray2[i]

【问题讨论】:

  • 从您发布的示例中,如果您在输入数组上循环,您已经有了一个可行的解决方案
  • 我正在寻找一个函数
  • 第 1 步:获取您现在正在工作的代码并将其移动到函数第 2 步:调用该函数第 3 步:利润
  • 没有内置的专门执行此操作。它被称为zip。 js 标准库中最接近的东西是reduce,就像 Nina 发布的那样。你没有理由不能创建自己的 zip 函数。

标签: javascript arrays concatenation


【解决方案1】:

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

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])); }
  • 这正是我要找的!谢谢。我的主要需求是在 Chrome Dev Tools javascript 控制台中易于使用的单线器
  • @Marathon55 仅供参考,您可以在 Chrome 开发工具控制台中运行多行脚本,我一直这样做。这与您的问题或答案无关,但只是我想我会传递的一点花絮。
  • 我们还需要.reduce() 有什么具体原因吗?在我看来,函数本身可以简单地与地图一起工作,对吧?喜欢merge = (a,b) => {return a.map(val, ind) => val + "-" + b[ind]);}
  • 对,使用 map 它可以工作,但它需要处理回调内部的另一个数组。更好的方法是将所有必要的数组收集到另一个数组中并从这个数组中获取结果,因为它很容易扩展更多的数组,
猜你喜欢
  • 2015-02-28
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
  • 2012-04-15
  • 2017-04-19
相关资源
最近更新 更多