我有一个数组,我试图在每个元素中识别一个特定的文本,只有当该元素从数组中存在匹配时才删除。
数组是
var Concat_names = ['Prod 1-Volume based deal-100 sections','Test Prod 1-Included Members-MB,'Prod 2-Commitment + Excess-100 sections','Prod 1-Flat Mon-TB'];
- 如果数组中的任何元素有
Flat Mon
,则从数组 中删除该元素 - 如果数组中的任何元素具有
Included Members
,则从数组 中删除该元素
下面是我尝试的-
for (var i in Concat_names) {
var check_included_mem = Concat_names[i].includes("Included Members");
if (check_included_mem == true) {
Concat_names.splice(i);
}
}
console.log(Concat_names);
for (var y in Concat_names){
var check_flat_mon = new RegExp(/Flat Mon/).test(Concat_names[y]);
if (check_flat_mon==true){
Concat_names.splice(y);
}
}
console.log(Concat_names);
在上面的代码中,只要满足条件并且缺少数组中的其他元素,循环就会中断。
我得到的输出是[ 'Prod 1-Volume based deal-100 sections' ]
而输出应该是
['Prod 1-Volume based deal-100 sections','Prod 2-Commitment + Excess-100 sections']
请指导和帮助!
在您的脚本中,如何修改以下内容?
:
Concat_names.splice(i);
:
Concat_names.splice(i, 1);
在这种情况下,请将Concat_names.splice(i);
都修改为Concat_names.splice(i, 1);
。
测试:
var Concat_names = ['Prod 1-Volume based deal-100 sections', 'Test Prod 1-Included Members-MB', 'Prod 2 - Commitment + Excess - 100 sections', 'Prod 1 - Flat Mon - TB'];
for (var i in Concat_names) {
var check_included_mem = Concat_names[i].includes("Included Members");
if (check_included_mem == true) {
Concat_names.splice(i, 1);
}
}
console.log(Concat_names);
for (var y in Concat_names) {
var check_flat_mon = new RegExp(/Flat Mon/).test(Concat_names[y]);
if (check_flat_mon == true) {
Concat_names.splice(y, 1);
}
}
console.log(Concat_names);
注意:
- 在您的情况下,也可以使用以下脚本:
var Concat_names = ['Prod 1-Volume based deal-100 sections', 'Test Prod 1-Included Members-MB', 'Prod 2 - Commitment + Excess - 100 sections', 'Prod 1 - Flat Mon - TB'];
var res = Concat_names.filter(e => !["Included Members", "Flat Mon"].some(f => e.includes(f)));
console.log(res)
参考:- 拼接()