如何在Javascript中检查一个字符串是否包含数组中的所有元素

5

我有一个字符串apple_mango_banana和一个包含[apple,mango]的数组。

我想检查我的字符串是否包含数组中存在的所有元素,如果是,我想显示与我的字符串相同ID的div。


1
请尝试并查看此处:[mcve]。 - Nina Scholz
1
请发布您已经尝试过的代码,出了什么问题以及需要帮助的部分。Stack Overflow并不是一个为您生成代码的代码工厂。 - Kevin Kloet
使用split函数按"_"拆分您的字符串。这将创建一个新数组,然后只需检查您的数组是否是该新数组的子集。以下是如何检查一个数组是否是另一个数组的子集:-https://dev59.com/gmYq5IYBdhLWcg3w30Xc - Ezio
3个回答

18
使用数组的every()函数和字符串的includes()函数;every函数将在传递的函数对所有项都返回true时返回true。

var str = 'apple_mango_banana';
var arr = ['apple','banana'];

var isEvery = arr.every(item => str.includes(item));

console.log(isEvery);


IE不支持,支持从Edge 14开始。 - brk
includeseveryES6 的特性。 - Suren Srapyan

2
你应该使用 Array.every 来处理这种情况。

var s = "apple_mango_banana";
var s1 = "apple_mago_banana";
var fruits = ["apple","mango"];

var allAvailable = fruits.every(function(fruit){
  return s.indexOf(fruit)>-1
});

var allAvailable1 = fruits.every(function(fruit){
  return s1.indexOf(fruit)>-1
});

console.log(allAvailable)
console.log(allAvailable1)


1
var string="ax_b_c_d";
var array=['b','c','ax','d'];

var arr=string.split("_");

if(array.sort().join("")==arr.sort().join("") && arr.length==array.length)
{
 console.log("match");
 }

如果更改顺序,这将无法工作。例如:“banana_apple”。 - Rajesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接