使用reduce函数比较两个字符串中的符号

时间:2017-03-15 14:00:50

标签: javascript arrays loops ecmascript-6

我尝试比较相同符号或char的数组中的两个字符串,这段代码可行,但如果我有两个以上的字符串数组,如何使用reduce方法在ES6中实现它。如果数组的第一个元素中的字符串包含数组第二个元素中字符串的所有字母,则需要返回true。但是如果我在数组中有超过2个元素,如何创建更灵活的函数。

function mutation(arr) {
      var arr2 = arr.map(item => item.toLowerCase().split(''));
      for (i=0;i<arr2[1].length;i++) {
        if (arr2[0].indexOf(arr2[1][i]) < 0)
          return false;
      }

      return true;
    }

    mutation(["hello", "hey"]);

1 个答案:

答案 0 :(得分:0)

@Palaniichuk我以为你原来的算法很稳固。为了处理您的请求,我能够创建一个使用reduce的解决方案。

我确实有一个问题要问你。如果数组的大小增加,那么如何评估字符串?

我问的原因是因为使用这样的辅助函数可能会帮助您扩展此算法。当然这一切都取决于输入的变化。如何评估输入。

function makeStr(string) {
  const reducer = string.split('').reduce((a, b) => {
    a[b] = a[b] + 1 || 1;
    return a;
  }, {});
  return Object.keys(reducer).sort().join('');
}

function secondMutation(arr) {
  const array = [...arr].map(makeStr);
    return array[0].includes(array[1]);
};

console.log(secondMutation(["hello", "hell"]));