我有两个阵列:的CoffeeScript:数组元素相匹配另一个阵列
array1 = ["hello","two","three"]
array2 = ["hello"]
我要检查,如果数组2包含1个或多个ARRAY1字。
我该怎么做,使用Coffeescript?
我有两个阵列:的CoffeeScript:数组元素相匹配另一个阵列
array1 = ["hello","two","three"]
array2 = ["hello"]
我要检查,如果数组2包含1个或多个ARRAY1字。
我该怎么做,使用Coffeescript?
我做了一个功能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)
前者更容易理解 - 如果有人想为此创建一个jsPerf.com测试,看看您发布的交叉码是否有任何好处,我会很好奇。 – GregL 2011-12-21 05:59:46
你可以自己创建一个jsPerf测试。点击两个'Test here'链接,然后从那里获取已编译的JavaScript代码。之后,创建一个jsPerf与2例。 – alessioalex 2011-12-21 08:49:53
你可以试试:
(true for value in array1 when value in array2).length > 0
contains = (item for item in array2 when item in array1)
(扭转阵列显示array1
双项)
想我应该把我自己的CoffeeScript的一行疯狂:-P
true in (val in array1 for val in array2)
以防万一有人来到这里,并寻找差异,而不是相交
difference = (val for val in array1 when val not in array2)
这会给你一个数组中阵列1的所有值(差异)但不是在数组2
嗯,我感到相当的第一行迷惑,和CoffeeScript的的核心优势之一是应该是增加JS的清晰度和可读性,对吧?也许这是一些聪明但复杂的代码,只有在@alessioalex提供的更清晰的代码效率更高时才能使用。 – GregL 2011-12-21 05:57:31
@GregL - 你的意思是这条线 - 'intersection =(a,b) - >'? – Anurag 2011-12-21 06:53:11
对不起,我的意思是第2行,这是交集函数的第一行。到目前为止,我已经学会了足够的CS语法来读取第一行。 :-)更多的是我不明白这条线是如何工作的。 – GregL 2011-12-21 07:36:30