在至少两个字符串中查找唯一值

时间:2011-06-17 19:50:35

标签: javascript string logic

如果我有10个不同的字符串,我想找到至少2个包含某些值...那逻辑会是什么?

所有“和”都不起作用,所有“或”都不起作用

下面不起作用......

这只有在每个人都有价值的情况下才有效...

if(str1 && str2 && str3 && str4 && str5 && str6 && str7 && str8 && str9 && str10) 

如果只有一个值,则需要至少为2

if(str1 || str2 || str3 || str4 || str5 || str6 || str7 || str8 || str8 || str10)

有没有简单的方法可以做到这一点?

编辑:更多信息...

将会有十个长字符串,我需要通过它们并检查(例如)是否有任何第一个字符是相同的,然后检查是否有任何第二个字符是相同的等等但我可以稍后添加所有额外的“charcode at”内容。相同的答案将用于检查全长字符串并查找两个字符串是否相同。

5 个答案:

答案 0 :(得分:2)

将所有字符串放在数组中,说myArray并计算具有该值的字符串,并查看count是否大于或等于2

var count = 0;
for (var index=0; index<myArray.length; index++) {
 if(myArray[index].indexOf(value) != -1) {count++;}
 if(count==2) break;
 }
if(count==2){alert("atleast 2 have value");}
else {alert("Less than 2 have value");}

答案 1 :(得分:1)

将每个字符串添加到数组中,然后迭代数组,每次找到匹配项时递增计数器:

var val = "search string here";
var arr = [str1, str2, str3, str4, str5, str6, str7, str8, str9, str10];

var matches = 0;
for (var i = 0; i < arr.length; i++) {
  if (arr[i].indexOf(val) > -1 && ++matches >= 2) break;
}

if (matches >= 2) {
  alert("validates");
} else {
  alert("failed");
}

答案 2 :(得分:1)

有点不清楚你在问什么。如果要检查至少两个字符串是否相互重复,则应执行以下操作:

function duplicatesExist (array) {
   var hash = {};
   for ( var i = 0 ; i < array.length ; i++ ) {
      if ( hash.hasOwnProperty(array[i]) ) return true;
      else hash[array[i]] = true;
   }
   return false;
}

duplicatesExist([str1, str2, str3, ...]);

答案 3 :(得分:0)

创建一个包含十个字符串的数组。创建“nonEmptyItemCount”变量(或类似)并将其设置为零。循环遍历数组,测试当前项,以及它是否具有值增量nonEmptyItemCount。完成循环后,查看nonEmptyItemCount&gt; = 2

答案 4 :(得分:0)

要测试非空字符串的数量,很容易构建这些字符串的数组(让我们称之为arrayOfStrings)。使用

可以找到非空字符串的数量
arrayOfStrings.filter(function(s) { return s }).length

我希望这就是你要找的东西。解释一下:filter返回函数返回true的数组的所有元素。 filter函数将字符串作为参数。我们只返回它,当javascript将值强制转换为布尔值时,每个空字符串将评估为false。这样在结果中只留下不空的。结果数组的长度是您要查找的数字,并将其与您想要的最小值进行比较