使用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
不起作用,因为您没有从回调返回任何内容。