如何用filter一行代码移除数组中所有子串匹配项?
Hey there! Let's break down your two requests into clean one-line solutions using JavaScript's array methods:
需求1:移除所有单引号(将"don't"转为"dont")
If you want to strip all single quotes from every element in the array (while keeping your original filter logic to remove exact "delete" matches), here's your one-liner:
const x = ["don't delete", "delete", "delete", "don't delete", "delete", "don't delete"].map(item => item.replace(/'/g, '')).filter(item => item !== 'delete'); console.log(x); // Output: ["dont delete", "dont delete", "dont delete"]
map(item => item.replace(/'/g, ''))iterates through each element and removes all single quotes (the/gflag ensures we catch every instance, not just the first one).- We chain the
filtermethod afterward to keep only elements that aren't exactly "delete".
If you just need to remove quotes without filtering out "delete" elements, simplify it to:
const x = ["don't delete", "delete", "delete", "don't delete", "delete", "don't delete"].map(item => item.replace(/'/g, ''));
需求2:移除所有包含"don't"的元素
This is where includes() shines for substring matching. We just check if an element doesn't contain "don't" and keep those:
const x = ["don't delete", "delete", "delete", "don't delete", "delete", "don't delete"].filter(item => !item.includes("don't")); console.log(x); // Output: ["delete", "delete", "delete"]
item.includes("don't")returnstrueif the substring exists in the element. Adding the!(not operator) inverses that, so we only keep elements that don't have "don't" in them.
内容的提问来源于stack exchange,提问作者srb633
相关产品推荐
相关产品推荐

