【问题标题】:Javascript program to find combination of length 2 for two arrays of different lengths [duplicate]Javascript程序为两个不同长度的数组找到长度2的组合[重复]
【发布时间】:2018-09-14 03:37:23
【问题描述】:

我有两个数组['b','c','d','e'] & ['h','i','k','l','m','n'] 我想使用 Javascript/AngularJS 程序为上面的数组找到长度为 2 的组合。 例如

['bh','bi','bk','bk','bl','bm','bn','ch,'ci','ck' ...]

【问题讨论】:

  • @AlekseySolovey 我认为函数映射是不必要的,因为函数 reduce 可以做到这一点。
  • 嗨,acc、v、i 的值是多少...我尝试在我的 JS 文件中使用上述代码,但看到错误

标签: javascript arrays angularjs


【解决方案1】:

这里是函数式编程 ES6 解决方案:

var array = ['b','c','d','e'];
var array2 =  ['h','i','k','l','m','n'];

var result = array.reduce( (a, v) =>
    [...a, ...array2.map(x=>v+x)],
[]);
console.log(result);

/*---------OR--------------*/

var result1 = array.reduce( (a, v, i) =>
    a.concat(array2.map( w => v + w )),
[]);
console.log(result1);

/*-------------OR(without arrow function)---------------*/

var result2 = array.reduce(function(a, v, i) {
    a = a.concat(array2.map(function(w){
      return v + w
    }));
    return a;
    },[]
);
console.log(result2);

/*----------for single array------------*/

var result4 = array.reduce( (a, v, i) =>
    [...a, ...array.slice(i+1).map(x=>v+'-'+x)],
[]);
console.log(result4);

【讨论】:

  • 谢谢,但是 a 、 v 和 i 的值是什么。
  • @neha 试试第二个
  • 当我在我的 JS 文件中使用你的代码时出现错误。我需要导入任何文件进行功能编程吗?我是js新手。任何帮助表示赞赏。我在“=>”符号下看到红色标记
  • @neha 您使用的是不支持 箭头符号 的旧版浏览器。 w => v + wfunction(w){return v + w} 相同
  • @neha a 、 v 和 i 的值是什么。阅读此developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
【解决方案2】:

使用嵌套Array.map() 调用并组合字母。将spreading 的数组展平为Array.concat()

const arr1 = ['b','c','d','e'];
const arr2 = ['h','i','k','l','m','n'];

const result = [].concat(...arr1.map((l1) => arr2.map((l2) => l1 + l2)));

console.log(result);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-17
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多