【问题标题】:how to create a function that receives a string "abcbdbd"?如何创建一个接收字符串“abcbdbd”的函数?
【发布时间】:2022-01-07 11:45:49
【问题描述】:

/**
* Let us create a function that receives a string "abcbdbd",
* and returns an array like:
["a", "a.b", "a.b.c", "a.b.c.b", "a.b.c.b.d", "a.b.c.b.d.b", ...]
*/

function splitString(str) {
  const arr = [];
  for (var i = 0; i < str.length; i++) {
    arr.push(str[i]);
    for (var z = 0; z < arr.length; z++) {
      const joinArr = `${arr[0]}.${arr[z]}`;
      console.log(joinArr);
    }
  }

  return [];
}

console.log(splitString("abcdebfkjj"));

如何添加 .在每个字符串之后?我试过for循环。那么我应该使用 map 和 .join 吗?

【问题讨论】:

  • 遍历字符串的字符。 .slice() 将字符串分成与所需长度匹配的片段。 .split().join(".").
  • 您只能将一个字符推入arrjoinArr 的内容只被记录,从不存储。 splitString() 总是返回一个空数组。

标签: javascript arrays


【解决方案1】:

一个使用map的例子

const str = "abcbdef";

const array = str.split("");

const output = array.map((_, idx, arr) => arr.slice(0, idx + 1).join("."));

console.log(output);

【讨论】:

    【解决方案2】:

    从字符串(Array.from())创建一个数组,将其缩减为一个数组,这样每个元素就是数组中的当前最后一个元素(acc[acc.length-1])加上自身。对于第一个元素,只需将其添加到数组中即可。

    function splitString(str) {
      return Array.from(str).reduce((acc,cv) => {
        if (acc[0]) acc.push(acc[acc.length-1]+"."+cv)
        else acc[0] = cv // if the array is empty, add just the first char
        return acc
      },[])
    }
    
    console.log(splitString("abcdebfkjj"));

    【讨论】:

      【解决方案3】:

      您可以创建一个包含所有字符的数组并添加最后一个返回值。

      function splitString(str) {
          return Array.from(
              str,
              (l => v => l += (l && '.') + v)('')
          );
      }
      
      console.log(splitString("abcdebfkjj"));

      【讨论】:

        猜你喜欢
        • 2021-02-16
        • 1970-01-01
        • 2017-06-17
        • 1970-01-01
        • 2011-06-29
        • 1970-01-01
        • 2019-08-20
        • 2017-08-01
        相关资源
        最近更新 更多