Coffeescript: элемент массива соответствует другому массиву - PullRequest
9 голосов
/ 21 декабря 2011

У меня есть два массива:

array1 = ["hello","two","three"]
array2 = ["hello"]

Я хочу проверить, содержит ли array2 1 или более слов array1.

Как я могу это сделать, используя Coffeescript?

Ответы [ 6 ]

12 голосов
/ 21 декабря 2011

Нашел способ проверить пересечение между двумя массивами, используя этот CoffeeScript раздел .CoffeeScript выглядит довольно круто, глядя на это.

Если массив, полученный после пересечения элементов, содержит хотя бы один элемент, то оба массива имеют общие элементы.

intersection = (a, b) ->
  [a, b] = [b, a] if a.length > b.length
  value for value in a when value in b

x = ["hello", "two", "three"]
y = ["hello"]

intersection x, y  // ["hello"]

Попробуйтеэто здесь .

7 голосов
/ 26 января 2012

Думал, что бросил бы свое собственное безумие с одним вкладышем: -P

true in (val in array1 for val in array2)
2 голосов
/ 22 декабря 2011
contains = (item for item in array2 when item in array1)

(инвертировать массивы, чтобы отобразить двойные записи в array1)

2 голосов
/ 21 декабря 2011

Вы можете попробовать:

(true for value in array1 when value in array2).length > 0
1 голос
/ 20 марта 2015

На всякий случай, если кто-то придет сюда и ищет разницу, а не пересечение

difference = (val for val in array1 when val not in array2)

Это даст вам массив ( разница ) всех значений в массив1 , но не в массив2

1 голос
/ 21 декабря 2011

Я сделал функцию is_in, посмотрите на мой пример:

array1 = ["hello","two","three"]
array2 = ["hello"]

is_in = (array1, array2) ->
  for i in array2
    for j in array1
      if i is j then return true

console.log is_in(array1, array2)

Тест здесь

Взглянув на пример пересечения, я могу достичь этого другим способом:

intersection = (a, b) ->
  [a, b] = [b, a] if a.length > b.length
  return true for value in a when value in b

array1 = ["hello","two","three"]
array2 = ["hello"]

console.log intersection(array1, array2)

Тест здесь

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