用于查找数字倍数的Javascript函数

时间:2019-01-15 05:19:41

标签: javascript function

创建一个名为mulitples0f的函数 它将接受两个参数,第一个将是数字数组,第二个将是数字。该函数应返回一个新数组,该数组由参数数组中的每个数字组成,该数字是参数编号的倍数。因此,multiplesOf([5,6,7,8,9,10],3)将返回[6,9]

function multiplesOf(numbers) {
  var multiples = numbers[0];

  for (var i = 0; i < numbers.length; i++) {
    if (numbers[i] % multiples === 0) {
      multiples = numbers[i];
    }
  }

  return multiples;
}

console.log(multiplesOf([4, 5, 6, 7, 8], 2));

请在jsbin帮助中定义says函数

8 个答案:

答案 0 :(得分:2)

问题是这样的:return multiples;

您将返回一个值。函数可以返回单个值,因此您必须创建一个数组然后返回它

function multiplesOf(numList, num) {
  return numList.filter(function(n) { return n % num === 0; })
}

console.log(multiplesOf([4, 5, 6, 7, 8], 2));

答案 1 :(得分:2)

您需要将第二个参数传递给函数。同样,var multiples = numbers[0];也不是必需的。然后,您无需执行multiples = numbers[i];而是将正确的值推入数组内部

function multiplesOf(numbers, num) {
  var multiples = []

  for (var i = 0; i < numbers.length; i++) {
    if (numbers[i] % num === 0) {
      multiples.push(numbers[i]);
    }
  }

  return multiples;
}

console.log(multiplesOf([4, 5, 6, 7, 8], 2));

或者,您也可以使用array.reduce函数

function mulitplesOf(arr, num) {

  return arr.reduce((acc, curr) => {
    if (curr % num === 0) {
      acc.push(curr)
    }
    return acc;
  }, [])

}

console.log(mulitplesOf([4, 5, 6, 7, 8], 2));

答案 2 :(得分:2)

我想是你想要的

var result = []

function arrMul(arr, value) {
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] % value === 0) {
      result.push(arr[i])
    }

  }
  return result
}
console.log(arrMul([4, 5, 6, 7, 8], 2))

答案 3 :(得分:2)

您的代码有一些问题。目前,multiplesOf仅接受应该为两个的1个参数,即numbers数组和单个number

您的另一个问题是,您没有保留找到的倍数的数组,而是将变量设置为找到的倍数,并且在找到新的倍数时被覆盖(因此,您找到的最后一个倍数会被覆盖)在数组中)。相反,您想将multiples变量更改为数组。这样,您可以push在数组中找到的每一个倍数。

请参见下面的工作示例(阅读代码注释以了解更改):

function multiplesOf(numbers, number) { // add second argument
  var multiples = []; // change to array (so that we can store multiple numbers - not just one multiple)
  for (var i = 0; i < numbers.length; i++) {
    if (numbers[i] % number === 0) { // divide by the number
      multiples.push(numbers[i]); // add the current multiple found to the multiples array
    }
  }

  return multiples;
}

console.log(multiplesOf([4, 5, 6, 7, 8], 2)); // Output: [4, 6, 8]

或者,如果您愿意使用高阶函数,也可以使用.filter来获取新数组。 .filter接受一个函数作为其第一个参数,该函数以element作为其参数。它将在新数组中保留您返回的true的任何元素:

const multiplesOf = (numbers, number) => numbers.filter(n => !(n % number));
console.log(multiplesOf([4, 5, 6, 7, 8], 2)); // [4, 6, 8]

答案 4 :(得分:2)

您可以使用过滤器方法来实现:

const multiplesOf = (numbers, multiple) => {
return numbers.filter(x => x % multiple === 0);
}

console.log(mulitplesOf([4, 5, 6, 7, 8], 2));

filter方法将在按照您指定的条件对数组进行过滤后返回该数组,在本例中,该条件是检查整数。

您还缺少该函数的第二个参数,即倍数。

答案 5 :(得分:2)

这是一个使用reduce的线性函数。我还使用了逗号运算符来返回结果arr。

var multiplesFn = (numberArr, num ) => numberArr.reduce((arr, curVal) => ( curVal%num == 0 && arr.push(curVal), arr),[])

console.log(multiplesFn([2,33,34,22,44,6,8], 2))

答案 6 :(得分:1)

您需要向函数multiplesOf(numbers, divider)添加第二个参数。您可以简单地创建一个数组,然后将倍数压入该数组并返回该数组。

function multiplesOf(numbers, divider) {
  // create an empty array
  var  multiples = []
  for (var i = 0; i < numbers.length; i++) {
    if (numbers[i] % divider === 0) {
     // push multiples to the array
      multiples.push(numbers[i]);
    }
  }
 // return the array
  return multiples;
}

console.log(multiplesOf([4, 5, 6, 7, 8], 2));

答案 7 :(得分:0)

console.log(sum(10));
function sum(limit) {
    let sum = 0;

        for (let i = 0; i <= limit; i++)
            if (i % 3 === 0 || i % 5 === 0)
                sum += i;

    return sum;
}

//enjoyit