【问题标题】:Using trim more than once in an array JS在数组 JS 中多次使用修剪
【发布时间】:2020-04-24 04:46:25
【问题描述】:

我有一段代码,我试图将带有特殊字符的较长字符串解析为没有空格或特殊字符的数组。
输入:name:这是一些东西,name2:这是更多东西
期望的输出:[name,this is some stuff,name2,this is more stuff]
当前输出:z.trim 不是函数

function parseOrder(custOrder) {
  const custOrderArr = custOrder.split(','); 
  const trimedArr = custOrderArr.map((x) => x.trim());
  const numberArr = trimedArr.map((y) => y.split(':'));
  const processArr = numberArr.map((z) => z.trim());
  console.log(processArr);
}

为什么修剪第一次有效,第二次无效?

【问题讨论】:

  • 在某些迭代中,您的 var z 可能不是 string 类型,请发布您正在使用的数据集。
  • 您正在创建一个数组数组(存储在 numberArr 中)。也许你想看看 array.flatten 或使用正则表达式。
  • numberArr 看起来它将是一个字符串数组

标签: javascript arrays mapping trim


【解决方案1】:

您不能修剪数组。但是您可以映射数组并修剪值。

此结果具有 Array#flatMap 用于防止数组与对。

function parseOrder(custOrder) {
    return custOrder
        .split(',')
        .flatMap(y => y.split(':').map(x => x.trim()));
}


var input = 'name: this is some stuff, name2: this is more stuff ';

console.log(parseOrder(input));

【讨论】:

  • 是的,完全忽略了它是一个数组的数组,而不仅仅是一个数组。
【解决方案2】:

尝试通过两个符号split,然后trim 你的元素:

const result = str.split(/[\:,]+/).map(s => s.trim());

一个例子:

let str = 'test: It is me, test2: it is me 2 ';
console.log(str.split(/[\:,]+/).map(s => s.trim()));

【讨论】:

    猜你喜欢
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多