我有一个像这样的数组
["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"
]
使用任何链接方法?
试试这个。这将返回与您所寻找的相同的输出。同时使用。映射
和。过滤器
组合。
let array = array
.filter((data) => data.indexOf(".jpg")>=0)
.map((data) => data.replace("home/work/",""))
你可以使用你使用过的相同的两种方法获得相同的结果,但是在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);
您可以在不创建另一个变量的情况下链接过滤数组,并使用隐式返回使内容更简洁:
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:发生非法重复 对任何想法持开放态度!也许有解决方法?!