为了账号安全,请及时绑定邮箱和手机立即绑定

将嵌套数组元素转换为字符串数组

将嵌套数组元素转换为字符串数组

阿晨1998 2021-12-02 14:57:54
给定一个简单的嵌套数组数组,如下所示:[  ['a','b',],  ['c','d'],  ['e']]我希望连接每个元素的值并创建一个这样的数组:['.a.c.e','.a.d.e','.b.c.e','.b.d.e']这只是一个简单的例子,但实际上可能有 3 个以上的嵌套数组和任意数量的元素。看起来它应该相对简单,但我就是无法解决它,任何人都可以帮忙吗?
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

由于数组长度未知,最好的方法是使用递归:


function conc(input) {

  const output = [];

  function _conc(input, partial) {

    if (input.length === 0) {

      return output.push(partial);

    }

    const [first, ...rest] = input;

    first.forEach(itm => {

      _conc(rest, partial + "." + itm)

    });

  }

  _conc(input, "");

  return output;

}


const input = [

  ['a','b',],

  ['c','d'],

  ['e']

]


console.log(conc(input))


或与flatMap:


function conc(input) {

  const [first, ...rest] = input;

  return rest.length === 0

    ? first.map(itm => "." + itm)

    : first.flatMap(itm => conc(rest).map(_itm => "." + itm + _itm));

}


const input = [

  ['a','b',],

  ['c','d'],

  ['e']

]


console.log(conc(input))


或减少:


const input = [

  ['a','b',],

  ['c','d'],

  ['e']

]


console.log(

  input.reduce((acc, a) => acc.flatMap(i1 => a.map(i2 => i1 + "." + i2)), [""])

)


查看完整回答
反对 回复 2021-12-02
  • 1 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信