Найти уникальное значение как минимум в двух строках - PullRequest
2 голосов
/ 17 июня 2011

если у меня есть 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 ]

2 голосов
/ 17 июня 2011

Поместите все строки в массив, скажем, myArray, и подсчитайте строки, имеющие значение, и посмотрите, больше или равно счетчик 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 голос
/ 18 июня 2011

Немного неясно, о чем ты спрашиваешь.Если вы хотите проверить, являются ли хотя бы две строки дублирующими друг друга, то следует выполнить следующее:

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, ...]);
1 голос
/ 17 июня 2011

Добавьте каждую строку в массив, а затем итерируйте массив, увеличивая счетчик каждый раз, когда найдено совпадение:

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");
}
0 голосов
/ 18 июня 2011

Чтобы проверить количество не пустых строк, легко построить массив из этих строк (назовем его arrayOfStrings). Количество непустых строк, которые вы можете найти с помощью

arrayOfStrings.filter(function(s) { return s }).length

Надеюсь, это то, что вы искали. Чтобы объяснить это: фильтр возвращает все элементы массива, где функция возвращает true. Функция фильтра получает строку в качестве аргумента. Мы просто возвращаем его, и пока javascript преобразует значение в логическое значение, каждая пустая строка будет иметь значение false. Это оставляет только непустые в результате. Длина полученного массива - это число, которое вы ищете, и вы сравниваете его с требуемым минимумом

0 голосов
/ 17 июня 2011

Создайте массив, содержащий десять строк.Создайте переменную «nonEmptyItemCount» (или аналогичную) и установите ее в ноль.Выполните цикл по массиву, проверяя текущий элемент и, если он имеет значение приращения nonEmptyItemCount.Когда вы закончите цикл, посмотрите, если nonEmptyItemCount> = 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...