Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript遍历数组,找到3的倍数并给出数字_Javascript_Arrays_Sorting_Modulo - Fatal编程技术网

Javascript遍历数组,找到3的倍数并给出数字

Javascript遍历数组,找到3的倍数并给出数字,javascript,arrays,sorting,modulo,Javascript,Arrays,Sorting,Modulo,我想查看数组并找到3的最小倍数,然后返回值或返回false 我已经按照数字的大小对数组进行了排序,然后使用了模运算符 这就是我所拥有的,但它似乎不起作用。这是我的密码: function firstMultipleOf3(numbers) { numbers.sort(function(a, b){return a - b}); console.log(numbers); for (var i = 0 ; i < firstMultipleOf3.length ;

我想查看数组并找到3的最小倍数,然后返回值或返回false

我已经按照数字的大小对数组进行了排序,然后使用了模运算符

这就是我所拥有的,但它似乎不起作用。这是我的密码:

function firstMultipleOf3(numbers) {
    numbers.sort(function(a, b){return a - b});
    console.log(numbers);
    for (var i = 0 ; i < firstMultipleOf3.length ; i++) {
        if (firstMultipleOf3[i] % 3 === 0) {
            return [i];
        } else {
            return false;
        }
    }
}

console.log(firstMultipleOf3([52,98,42,17,33,24])); // 42
console.log(firstMultipleOf3([38,52,34,13,41]));    // false
函数firstMultipleOf3(数字){
sort(函数(a,b){返回a-b});
控制台日志(编号);
对于(变量i=0;i
如果没有匹配的元素,则要返回false。因此,它需要在循环之外:

for (var i = 0; i < numbers.length; i++) 
  if (numbers[i] % 3 === 0) 
    return numbers[i];

return false;
for(变量i=0;i
我将如何做到这一点:

function firstMultipleOf3(numbers) {
  let minimum = false;
  for(const n of numbers) 
    if(!(n % 3) && (!minimum || n < minimum))
       minimum = n;
   return minimum;
}
函数firstMultipleOf3(数字){
设最小值=false;
for(数量常数)
如果(!(n%3)和(!最小值| | n<最小值))
最小值=n;
返回最小值;
}
const number=[52,98,42,17,33,24];
const find=numbers=>numbers.sort((a,b)=>a-b).find(n=>n%3==0)| | false;
所选常量=查找(数字)
console.log(选中);

log(find([38,52,34,13,41])在for循环中,测试使用的是函数名而不是数组名(数字)。此外,您正在if条件下执行此操作。 通过示例输出,您需要的是数字[i],而不是索引本身。

  • 创建一个泛型函数并命名它
  • 使用
    .Sort()
  • 使用
    .find()
    在数组中查找传递值的倍数。此方法将返回通过回调函数或
    null
    实现的测试的值
  • 使用
    |
    在case
    中显式返回
    false
    。find()
    返回
    未定义的
演示:

让findMultipe=(a,m)=>a.sort((a,b)=>(a-b))
.find((n)=>(n%m==0))| | false;
log(findMultipe([52,98,42,17,33,24,3]);

log(findMultipe([38,52,34,13,41],3))
[52,98,42,17,33,24].sort().find(n=>n%3==0)
@dave
Array#sort
不带回调对数组中的值进行排序,就像它们是字符串一样
[3111,3,2,33]。sort()/[111,2,3,33]
等于
1
(因为在这种情况下,函数只接受一个参数)。我想你的意思是写
数字。改为写长度
。试着避免
(a
它大部分时间都能工作,但可能以意外的方式失败,并导致难以调试的问题:)。。只需使用
(a-b)
@Keith谢谢您的输入。我将牢记:注意,如果你认为<代码> 0 /代码>是每一个数字的倍数,如果你的数组包含一个<代码> 0 /代码>,穆罕默德的答案仍然会返回<代码> false <代码>。这是因为将计算
0 | | false
,并且
0
是假值。