js 如何实现 输出多个数组连接起来的不同组合

发布于 2022-09-06 02:32:33 字数 388 浏览 12 评论 0

比如有三个数组:

var a = [1, 2, 3, 4],
    b = ['aa', 'bb', 'cc'],
    c = ['zxc', 'dsg', 'sgs'];

abc 都有可能是空值 []

目的是输出 这三个数组的各种组合方式
如:

1-aa-zxc
1-aa-dsg
1-aa-sgs
1-bb-zxc
1-bb-dsg
...

如果 a=[] 则对应结果为 aa-zxc 等等

求解,如何优雅的实现?谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

爱殇璃 2022-09-13 02:32:33
    let a = [1, 2, 3, 4],
        b = ['aa', 'bb', 'cc'],
        c = ['zxc', 'dsg', 'sgs'];
    let arr=[]
    a.map((aele,i)=>{

        b.map((bele,i)=>{

             c.map((cele,i)=>{
                arr.push(aele+'-'+bele+'-'+cele);
            })
        })
        
    })
    console.log(arr)

抛砖引玉(〃'▽'〃)

不甘平庸 2022-09-13 02:32:33
  var a = [1, 2, 3, 4],
    b = ['aa', 'bb', 'cc'],
    c = ['zxc', 'dsg', 'sgs'];
  function contactArray(arr1,arr2,arr3) {
    1.获取三个数组长度,取最长maxLength
    2.一次for循环,i从0开始,小于maxLength
    3.循环内部逻辑
   if (!arr1[i]) {
        arr1[i] = "";
      } else {
        arr1[i] = arr1[i] + "--"
      }
      if (!arr2[i]) {
        arr2[i] = "";
      } else {
        arr2[i] = arr2[i] + "--"
      }
      if (!arr3[i]) {
        arr3[i] = "";
      }
      console.log(arr1[i] + arr2[i] + arr3[i])
  }
contactArray(a,b,c)
眼藏柔 2022-09-13 02:32:33

谢谢各位的回答,我已经找到感觉比较好的方式了。分享如下

// 需要先把数组去空
function contactArray(arr, connector) {
    var result = [],
        connector = connector || '_';

    function levelOne(aa, b) {
        var tmp = [];
        aa.forEach(function(val, i) {
            b.forEach(function(value, j) {
                tmp.push(val + connector + value);
            });
        });
        return tmp;
    }
    result = arr.reduce(function(prev, curren, index, array) {
        return levelOne(prev, curren);
    });
    return result;
}
var a = [1, 2, 3, 4],
    b = ['aa', 'bb', 'cc'],
    c = ['zxc', 'dsg', 'sgs'],
    arr = [a, b, c],
    result = [];

result = contactArray(arr);
console.log(result)
薄暮涼年 2022-09-13 02:32:33

应该用三层循环就可以了吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文