当前位置: 首页 > 知识库问答 >
问题:

使用JavaScript/node js[duplicate]在一个条件下替换并过滤方法

扈瑞
2023-03-14

我有一个像这样的数组

["home/work/abc.jpg",
 "home/work/fish.pdf",
 "home/work/fish.jpg",
 "home/work/doc/animal.jpg",
 "home/work/doc/animal.pdf"];

所以我想过滤包含“.jpg”扩展名文件的数组,所以我用

 array= array.filter((data)=>{
 return data.indexOf(".jpg")>=0
 });

所以我得到了我的期望值

[ "home/work/abc.jpg",
  "home/work/fish.jpg",
  "home/work/doc/animal.jpg"
]

我用地图功能代替了“家/工作/”

 let rep="home/work/";
 array = array.map((data)=>{
 data.replace(rep,"")
 });

得到了我的价值

[ "abc.jpg",
  "fish.jpg",
  "doc/animal.jpg"
]

但问题是,我必须使用两种方法来过滤和替换它们。我是否有可能合并这两种方法并最小化代码

 array= array.filter((data)=>{
 return data.indexOf(".jpg")>=0
 });

 let rep="home/work/";
 array = array.map((data)=>{
 data.replace(rep,"")
 });

预期产出

[ "abc.jpg",
  "fish.jpg",
  "doc/animal.jpg"
]

使用任何链接方法?

共有3个答案

须新
2023-03-14

试试这个。这将返回与您所寻找的相同的输出。同时使用。映射。过滤器组合。

 let array = array
   .filter((data) => data.indexOf(".jpg")>=0)
   .map((data) => data.replace("home/work/",""))
郜联
2023-03-14

你可以使用你使用过的相同的两种方法获得相同的结果,但是在reduce中

const arr = [
  "home/work/abc.jpg",
  "home/work/fish.pdf",
  "home/work/fish.jpg",
  "home/work/doc/animal.jpg",
  "home/work/doc/animal.pdf",
];

const result = arr.reduce((acc, curr) => {
  if (curr.indexOf(".jpg") >= 0) {
    acc.push(curr.replace("home/work/", ""));
  }
  return acc;
}, []);

console.log(result);
姚浩歌
2023-03-14

您可以在不创建另一个变量的情况下链接过滤数组,并使用隐式返回使内容更简洁:

const filenames = ["home/work/abc.jpg",
 "home/work/fish.pdf",
 "home/work/fish.jpg",
 "home/work/doc/animal.jpg",
 "home/work/doc/animal.pdf"];
const rep="home/work/";
const result = filenames
  .filter(file => file.includes('.jpg'))
  .map(file => file.replace(rep, ''));
console.log(result);
 类似资料:
  • 问题内容: 很抱歉那个愚蠢的问题。如何在javascript切换大小写语言元素中为案件使用条件?像下面的示例一样,当变量<= 5和> 0 时,大小写应该匹配;但是,我的代码不起作用: 感谢您的任何建议! 问题答案: 这有效: 此答案的先前版本认为括号是罪魁祸首。实际上,括号在这里是无关紧要的-唯一必要的是您的case表达式必须为布尔值。 之所以起作用,是因为我们将给开关的值用作比较的依据。因此,同

  • 问题内容: 我在使用Node使用Gmail API创建过滤器时遇到问题。Auth和范围很好;我收到错误消息“过滤器没有任何条件”。我想我在标题/正文/资源参数上做错了什么,但无法解决。 这是函数,我已经尝试了多种变体: docs: 创建过滤器https://developers.google.com/gmail/api/v1/reference/users/settings/filters/创建过

  • 我想过滤以下JSON。 我如何将映射函数与过滤器一起使用,而不是。我的想法如下。但它不起作用。 我该怎么办? 谢谢

  • 问题内容: 我正在尝试使用Pandas在几个条件下进行布尔索引。我原来的DataFrame称为。如果执行以下操作,将得到预期的结果: 但是,如果我这样做(我认为应该是等效的),则不会返回任何行: 知道导致差异的原因是什么? 问题答案: 使用是因为运算符优先级: 或者,在单独的行上创建条件: 样品 :

  • 我有一个Jsonnodes数组。差不多吧 我有一个要求,如果两个节点的sip值相同,那么我只需要选择最后修改日期是最新的sip。在上面的例子中,最终输出应该是剩余的两个节点。 我试图通过创建< code>HashMap来解决这个问题

  • 我们使用的是 replaceAll 的 String 方法,我们不能在任何字符串中替换 { 。我们的例子: 尝试过: 误差如下: java.util.regex.PatternSyntaxException:发生非法重复 对任何想法持开放态度!也许有解决方法?!