coffeescript:这可以改写成更简洁吗?

时间:2016-02-17 01:31:28

标签: javascript coffeescript refactoring

我有一个片段,可以打印数字数组中可以完全分割的最小数字。

numbers = [1, 2, 3, 4, 5, 6]

divisible = (large, small) -> large % small is 0

for i in [1..100]
    div = (divisible i, num for num in numbers)
    if (div.reduce (x, y) -> x and y)
        console.log i
        break

我是coffeescript的新手,我想知道是否有更简洁/更清洁的实现。

2 个答案:

答案 0 :(得分:1)

我会写这样的东西但它是关于使用Array.filter而不是Array.reduce,而不是关于使用coffeescript技巧来缩小原始代码。

fn = (numbers) ->
  for i in [1..1000]
    return i if (numbers.filter (el) -> i % el == 0).length is numbers.length

console.log fn([1, 2, 3, 4, 5, 6])

答案 1 :(得分:1)

假设数字中没有0。

gcd = ( a, b )->
    unless b then a else gcd b, a % b

lcm = ( a, b )->
    a * ( b / gcd a, b )

numbers = [ 2, 3, 4, 5, 6, 13, 98751 ]

console.log numbers.reduce lcm