使用JavaScript/node js在一个条件下替换和筛选方法

使用JavaScript/node js在一个条件下替换和筛选方法,javascript,node.js,arrays,filter,replace,Javascript,Node.js,Arrays,Filter,Replace,我有一个像这样的数组 ["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)=>

我有一个像这样的数组

["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"
]
我用map函数替换了“home/work/”

 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"
]

通过使用任何链接方法?

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

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=“家/工作/”;
const result=文件名
.filter(file=>file.includes('.jpg'))
.map(file=>file.replace(rep.);

控制台日志(结果)您可以在不创建另一个变量的情况下链接过滤数组,并使用隐式返回使内容更加简洁:

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=“家/工作/”;
const result=文件名
.filter(file=>file.includes('.jpg'))
.map(file=>file.replace(rep.);

控制台日志(结果)您可以使用相同的两种方法获得相同的结果,这两种方法与您在内部使用的方法相同

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)=>{
如果(货币指数(“.jpg”)>=0){
附件推送(当前替换(“家庭/工作/”,“”);
}
返回acc;
}, []);

控制台日志(结果)您可以使用相同的两种方法获得相同的结果,这两种方法与您在内部使用的方法相同

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)=>{
如果(货币指数(“.jpg”)>=0){
附件推送(当前替换(“家庭/工作/”,“”);
}
返回acc;
}, []);

控制台日志(结果)试试这个。这将返回与您要查找的相同的输出。 同时使用
.map
.filter

 let array = array
   .filter((data) => data.indexOf(".jpg")>=0)
   .map((data) => data.replace("home/work/",""))

试试这个。这将返回与您要查找的相同的输出。 同时使用
.map
.filter

 let array = array
   .filter((data) => data.indexOf(".jpg")>=0)
   .map((data) => data.replace("home/work/",""))

您可以链接
array.filter().map()
,但不能将它们组合到一个函数中,因为它们执行不同的操作
filter
返回一个不同长度的新数组,并且
map
转换数组中的每个项。此外,
map
不起作用,因为您没有从回调返回任何内容。您可以链接
array.filter().map()
,但不能将它们组合到一个函数中,因为它们做的事情不同
filter
返回不同长度的新数组,
map
转换数组中的每个项。此外,
map
不起作用,因为您没有从回调返回任何内容。