Javascript 过滤及;使用不区分大小写的正则表达式从JS数组中删除项

Javascript 过滤及;使用不区分大小写的正则表达式从JS数组中删除项,javascript,ecmascript-6,Javascript,Ecmascript 6,在给定数组上: const arr=[ {fn:“史蒂夫”,ln:“乔布斯”}, {fn:“丹尼斯”,ln:“罗德曼”}, {fn:“卡尔”,ln:“马龙”}, {fn:“文斯”,ln:“卡特”}, {fn:“史蒂夫”,ln:“国王”} ]; 如果我想返回一个新数组,不包括任何名为Steve的人,我可以运行: const filteredar=arr.filter(obj=>obj.fn!=“Steve”); 如果不使用toLowerCase(),我如何编写正则表达式以在Steve name

在给定数组上:

const arr=[
{fn:“史蒂夫”,ln:“乔布斯”},
{fn:“丹尼斯”,ln:“罗德曼”},
{fn:“卡尔”,ln:“马龙”},
{fn:“文斯”,ln:“卡特”},
{fn:“史蒂夫”,ln:“国王”}
];
如果我想返回一个新数组,不包括任何名为Steve的人,我可以运行:

const filteredar=arr.filter(obj=>obj.fn!=“Steve”);
如果不使用
toLowerCase()
,我如何编写正则表达式以在Steve names可以是小写或大写的情况下获得相同的结果

{fn:“史蒂夫”,ln:“乔布斯”},
{fn:“丹尼斯”,ln:“罗德曼”},
{fn:“卡尔”,ln:“马龙”},
{fn:“文斯”,ln:“卡特”},
{fn:“史蒂夫”,ln:“国王”},
{fn:“史蒂夫”,ln:“约旦”},
{fn:“史蒂夫”,ln:“克拉克”},
用方法检查字符串,并在正则表达式中使用(忽略大小写)

注意:如果您想要精确匹配,例如忽略包含名称“steven”的字符串,您可以使用
^steve$
(请参阅)

const arr=[{“fst”:“史蒂夫”、“snd”:“乔布斯”}、{“fst”:“丹尼斯”、“snd”:“罗德曼”}、{“fst”:“卡尔”、“snd”:“马龙”}、{“fst”:“文斯”、“snd”:“卡特”}、{“fst”:“史蒂夫”、“snd”:“金”}、{“fst”:“史蒂夫”、“snd”:“乔丹”}、{“fst”:“史蒂夫”、“snd”:“克拉克”};
常量模式=/steve/i;//或/^steven$/i
const result=arr.filter(obj=>!pattern.test(obj.fst));
控制台日志(结果)
const arr=[
{fn:“史蒂夫”,ln:“乔布斯”},
{fn:“丹尼斯”,ln:“罗德曼”},
{fn:“卡尔”,ln:“马龙”},
{fn:“文斯”,ln:“卡特”},
{fn:“史蒂夫”,ln:“国王”}
];
const filteredar=arr.filter(obj=>!/Steve/i.test(obj.fn));
控制台日志(Filteredar)为什么不使用

localeCompare()方法返回一个数字,指示引用字符串是在给定字符串之前还是之后,或者与给定字符串的排序顺序相同

在选项中,您可以设置灵敏度:

“重音”:只有在基音或重音和其他变音符号上不同的字符串才会比较为不相等。示例:a≠ b、 a≠ á,a=a

const arr=[
{fn:“史蒂夫”,ln:“乔布斯”},
{fn:“丹尼斯”,ln:“罗德曼”},
{fn:“卡尔”,ln:“马龙”},
{fn:“文斯”,ln:“卡特”},
{fn:“史蒂夫”,ln:“国王”}
];
const filteredar=arr.filter(obj=>obj.fn.localeCompare(“steve”),未定义,
{敏感度:'重音'});

控制台日志(Filteredar)“类似于Bla 2的数据?”
。我特别询问并提供了一个真实的代码示例,其中包含了我的问题的结构。@NullisTrue接受的答案与此问题中的答案完全相同。@RokoC.Buljan我与Ori在同一时间写的。如果1ms可以算作“同一时间”,那么你迟到了~81000ms…:D;)谢谢@Ori Drori,出于某种原因,我以为这会涉及到
新的RegExp(…)
啊,刚才看到了你编辑过的答案。。。美好的0答案(相等)的计算结果为
false
,该项被删除。您应该包括有关此解决方案的更多信息。