拆分最后两个单词并在javascript中过滤

拆分最后两个单词并在javascript中过滤,javascript,jquery,arrays,string,object,Javascript,Jquery,Arrays,String,Object,我想知道如何使用javascript过滤值数组 如何使用“提供程序发送”和“提供程序接收”分隔阵列 var filterradio = id.filter(function(e){ return e.id.split("-")[0] == "provider-send" }) 将2作为第二个参数传递给,然后通过-再次传递join()。split()的第二个参数指定结果数组中的最大元素数。 var id=[“提供商发送贷记转账”、“提供商发送借记资金”、

我想知道如何使用javascript过滤值数组 如何使用“提供程序发送”和“提供程序接收”分隔阵列

 var filterradio = id.filter(function(e){       
       return e.id.split("-")[0] == "provider-send"
    })  

2
作为第二个参数传递给,然后通过
-
再次传递
join()
split()
的第二个参数指定结果数组中的最大元素数。
var id=[“提供商发送贷记转账”、“提供商发送借记资金”、“提供商接收贷记转账”、“提供商接收借记资金”]
var filterradio=id.filter(函数(id){
返回id.split(“-”,2).join(“-”)=“提供程序发送”
})  

console.log(filteradio)
如果始终是“提供者接收-…”和“提供者发送…”,则可以执行以下操作将它们分开

for (i = 0; i < id.length; i++) {
    if (id[i].split("provider-send-").length > 1) {
        result_sn.push(id[i]);
    } else if (id[i].split("provider-receive-").length > 1) {
        result_rcn.push(id[i])
    }
}
for(i=0;i1){
结果序列号推送(id[i]);
}else if(id[i].split(“提供程序接收-”)。长度>1){
结果推送(id[i])
}
}

我建议使用
reduce
而不是
过滤器,因为reduce用于将数组大小减少为单个返回元素。
在这里,我将数组简化为一个对象,它有两个键
result\u sn
result\u rcn

var id=[“提供商发送贷记转账”、“提供商发送借记资金”、“提供商接收贷记转账”、“提供商接收借记资金”]
const result=id.reduce((obj,str)=>{
如果(str.match(/^provider send/g))
obj['result_sn'].push(str);
其他的
obj['result_rcn'].push(str);
返回obj;
}, {
“结果编号”:[],
'结果_rcn':[]
});
console.log(结果)
尝试以下操作:

var id=[“提供商发送贷记转账”、“提供商发送借记资金”、“提供商接收贷记转账”、“提供商接收借记资金”];
var结果_sn=[],结果_rcn=[];
for(id的值){
var twowwords=value.split('-',2.join('-');
如果(两个字==“提供商发送”)
结果推送(值);
else if(两个字==“提供者接收”)
结果推送(值);
}
控制台日志(结果编号);
控制台日志(结果\u rcn).filter()
进行编码>,需要为分配给变量的每个要匹配的模式编写一个过滤器

建议使用
.reduce()

一开始它可能看起来很吓人,但实际上您使用的是
累加器
作为临时变量,存储并提交给每个迭代。数组的每次迭代都将使用
currentValue
给出当前迭代值

作为添加新模式的示例,我添加了
其他内容

var id=[
“提供商发送信用转账”,
“提供商发送借记资金”,
“提供商接收信用转账”,
“提供商收到借记资金”,
“其他贷记转账”,
“其他借记基金”
];
常数{
“提供程序发送”:结果编号,
“提供程序接收”:结果\u rcn,
“其他东西”:结果
}=id.reduce(功能(累加器、电流值){
let prefix=currentValue.match(/^\w+-\w+/)[0];
返回{…累加器[prefix]:(累加器[prefix]| |[])。concat(currentValue)}
}, {});
控制台日志(结果编号);
控制台日志(结果\u rcn);

控制台日志(结果存储)
如果在
-
上拆分,则所有元素中都不会有一个元素。看看
e.id.split(“-”[0]
products你没有正确使用
filter
,因为你没有从id中过滤任何东西,你应该使用
reduce
for
forEach
,@codemanic,嗨,我的朋友,请参阅更新后的帖子。谢谢你为什么不使用<代码>搜索或<代码>包含<>代码> Stasts而不是<代码>分裂< /代码>和<代码>连接< /代码>你应该将<代码> ^ <代码>添加到你的正则表达式中,否则它将匹配<代码>一些提供者发送,即使这里不是这样,但是考虑IMO是很好的,无论如何+1旁注:您可以使用
search
startsWIth
includes
,+1直接搜索此值,而不是拆分
for (i = 0; i < id.length; i++) {
    if (id[i].split("provider-send-").length > 1) {
        result_sn.push(id[i]);
    } else if (id[i].split("provider-receive-").length > 1) {
        result_rcn.push(id[i])
    }
}