创建一个名为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函数
答案 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