Javascript 如何遍历数组数组并检查它们是否具有另一个数组的值+;前缀
我有两个数组,一个用于我称为服务器的对象,另一个用于客户端,如下所示:Javascript 如何遍历数组数组并检查它们是否具有另一个数组的值+;前缀,javascript,arrays,Javascript,Arrays,我有两个数组,一个用于我称为服务器的对象,另一个用于客户端,如下所示: server_array = ['test1', 'test2', 'test3'] client_array = [['not_test1', 'test3'], ['test2', 'test4']] 我需要做的是,只返回客户端数组中没有前缀not_uuuafter匹配值的数组,以便澄清: 在client_数组的位置0中,我在其中有一个not_test1,它与server_数组中的test1相反,因此应该对该数组进行筛
server_array = ['test1', 'test2', 'test3']
client_array = [['not_test1', 'test3'], ['test2', 'test4']]
我需要做的是,只返回客户端数组中没有前缀not_uuuafter匹配值的数组,以便澄清:
在client_数组的位置0中,我在其中有一个not_test1,它与server_数组中的test1相反,因此应该对该数组进行筛选
因此,产出将是:
client_array = [['test2', 'test4']]
我目前尝试了一个使用map和filter的解决方案,但无法提供任何在数组中正确迭代的方法,我没有尝试执行普通for循环,因为我认为执行该循环会花费太多时间。解决方案就这么简单。从结果数组中筛选出与谓词至少有一个匹配项的数组
server_array = ['test1', 'test2', 'test3'];
client_array = [['not_test1', 'test3'], ['test2', 'test4']];
client_array
.filter(c => !c.some(i => i.startsWith('not_') &&
server_array.includes(i.replace(/^not_/, ''))));
e=>`非${e}`==元素
const result=client\u array.filter(array=>array.filter(
element=>server\u array.find(e=>`not\u${e}`==element)).length==0)
const server_数组=['test1','test2','test3']
const client_array=[['not_test1','test3',['test2','test4']]
const res=client\u array.filter(e=>//filter client\u array
e、 some(x=>//如果有任何项,则筛选子数组
!x.startsWith('not_uu')//检查子数组元素是否以“not_uu”开头
&&!server_array.includes(x.replace('not_','')//检查server_array是否包含未被否定的项
)
)
console.log(res)
在下面的代码中,您可以删除.flat()
以不展平结果
server_数组=['test1','test2','test3']
客户端_数组=['not_test1','test3',['test2','test4']]
设res=client_array.filter(e=>!e[0].startsWith('not_')).flat()代码>“我目前尝试了一种使用映射和过滤器的解决方案”…您能给我们演示一下吗?如果服务器阵列中有not_test1
,您的预期结果是否为[['not_test1','test3'],['test2','test4']
?这是完美的。非常感谢。