Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript使用map根据'\n';_Javascript_Arrays - Fatal编程技术网

JavaScript使用map根据'\n';

JavaScript使用map根据'\n';,javascript,arrays,Javascript,Arrays,我正在使用映射来尝试清理数据,并将数据发送到一个API,该API有一个问题,当找到一个\n或\t时,它确实会解决这个问题,因此选择替换一段时间: const allBulletPoints=Array.from(document.querySelectorAll('ul,ol')); 常量allBulletPointsText=allBulletPoints.map((元素)=> element.textContent .split(/(\t)|(\n)/g) .filter((element

我正在使用映射来尝试清理数据,并将数据发送到一个API,该API有一个问题,当找到一个\n或\t时,它确实会解决这个问题,因此选择替换一段时间:

const allBulletPoints=Array.from(document.querySelectorAll('ul,ol'));
常量allBulletPointsText=allBulletPoints.map((元素)=>
element.textContent
.split(/(\t)|(\n)/g)
.filter((element)=>element&&!element.match(/(\t)|(\n)/gi))
);
console.log(allBulletPointsText);
/*
结果:
[   
[
“Lorem ipsum dolor sit amet Concertetur,Adipising Elite”,
“Lorem ipsum dolor sit amet Concertetur,Adipising Elite”,
“Lorem ipsum dolor sit amet Concertetur,Adipising Elite”,
"    "
],
[
“Lorem ipsum dolor sit amet Concertetur,Adipising Elite”,
“Lorem ipsum dolor sit amet Concertetur,Adipising Elite”,
“Lorem ipsum dolor sit amet Concertetur,Adipising Elite”,
"    "
]
]
我需要这样:
[
“Lorem ipsum dolor sit amet Concertetur,Adipising Elite”,
“Lorem ipsum dolor sit amet Concertetur,Adipising Elite”,
“Lorem ipsum dolor sit amet Concertetur,Adipising Elite”,
“Lorem ipsum dolor sit amet Concertetur,Adipising Elite”,
“Lorem ipsum dolor sit amet Concertetur,Adipising Elite”,
“Lorem ipsum dolor sit amet Concertetur,Adipising Elite”,
]
*/
  • Lorem ipsum dolor sit amet Concertetur,Adipising Elite
  • Lorem ipsum dolor sit amet Concertetur,Adipising Elite
  • Lorem ipsum dolor sit amet Concertetur,Adipising Elite
  • Lorem ipsum dolor sit amet Concertetur,Adipising Elite
  • Lorem ipsum dolor sit amet Concertetur,Adipising Elite
  • Lorem ipsum dolor sit amet Concertetur,Adipising Elite

  • 如评论中所述,在执行拆分之前,您可以先修剪字符串

    element.innerText
           .trim()
           .split(/(\t)|(\n)/g)
           .filter((element) => element && !element.match(/(\t)|(\n)/gi))
    
  • 元素.match(/(\t)|(\n)/gi)
    没有任何作用,因为它已经删除了所有
    \t
    \n
  • 您可以将它构建到拆分(/\s*?[\t\n]\s*/g)中,而不是单独对每一行进行命名。或者只是用它来匹配你感兴趣的东西
  • 可以使用来连接数组
  • 所以这可能就是你想要的:

    const allBulletPointsText = Array.from(
           document.querySelectorAll('ul,ol'),
           e => e.textContent.match(/\S[^\t\n]*\S|\S/g) || []
    // or: e => e.textContent.trim().split(/\s*?[\t\n]\s*/g).filter(e => e)
    // or: e => e.textContent.split(/^\s+|\s*?[\t\n]\s*|\s+$/g).filter(e => e)
    // or: e => e.textContent.split(/[\t\n]+/g).map(e => e.trim()).filter(e => e)
    ).flat();
    

    单击编辑,然后单击堆栈代码段编辑器,并发布一个包含相关HTML和预期输出的文件,以便
    元素.textContent.replace(/\s+/g',).trim()
    我知道如何连接数组?@Rogérioferreirerademelo您可以再次迭代并使用Array.prototype.contact,甚至可以执行类似于vara=['hello']的操作;VarB=[‘世界’];console.log(a+b);//HelloWorld好的,我会做的另一个伟大的解决方案发表在这里谢谢,我从来没有听说过平面法。