Javascript循环数组以查找可被3整除的数字

时间:2016-03-30 18:41:07

标签: javascript arrays loops for-loop

我需要找到让javascript循环遍历数组的正确方法,找到所有可被3整除的数字,并将这些数字推送到一个新数组中。

这是我到目前为止所拥有的......

var array = [],
    threes = [];

function loveTheThrees(array) {
    for (i = 0, len = array.length; i < len; i++) {
    threes = array.push(i % 3);
  }
  return threes;
}

因此,如果我们通过函数传递[1,2,3,4,5,6]的数组,它会将数字3和6推出到“threes”数组中。希望这是有道理的。

8 个答案:

答案 0 :(得分:5)

您可以使用Array#filter执行此任务。

  

filter()为数组中的每个元素调用一次提供的callback函数,并构造一个包含callback返回真值或a value that coerces to true的所有值的新数组}。仅为已分配值的数组的索引调用callback;对于已删除的索引或从未分配过值的索引,不会调用它。不会通过callback测试的数组元素被简单地跳过,并且不包含在新数组中。

&#13;
&#13;
function loveTheThrees(array) {
    return array.filter(function (a) {
        return !(a % 3);
    });
}
document.write('<pre>' + JSON.stringify(loveTheThrees([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 0, 4) + '</pre>');
&#13;
&#13;
&#13;

答案 1 :(得分:1)

var array = [],
three = [];

function loveTheThrees(array) {
for (i = 0, len = array.length; i < len; i++) {
    if(array[i] % 3 == 0){
        three.push(array[i]);
     }
   }
 }

答案 2 :(得分:1)

console.log([1, 2, 3, 4, 5, 6, 7].filter(function(a){return a%3===0;}));

如果回调返回true,则Array.filter()遍历数组并将当前对象移动到另一个数组。在这种情况下,我编写了一个回调函数,如果它可被3整除则返回true,因此只有那些项目将被添加到不同的数组

答案 3 :(得分:0)

检查数字是否可被3整除,然后将其添加到数组中。试试这个

function loveTheThrees(array) {
    for (i = 0, len = array.length; i < len; i++) {
      if(array[i] % 3 == 0){
        three.push(array[I]);
     }
  }

答案 4 :(得分:0)

loveTheThrees=(arr)=>arr.filter(el=>Boolean(parseFloat(el)) && isFinite(el) && !Boolean(el%3))

es6版+跳过非数字

loveTheThrees([null,未定义, '哈哈',100,3,6])

结果:[3,6]

答案 5 :(得分:0)

使用像Nina建议的过滤器是更好的方法。但是,我假设你是一个初学者,可能还不了解回调,在这种情况下,这个功能将起作用:

function loveTheThrees(collection){
        var newArray = []
        for (var i =0; i< collection.length;i++){
            if (myArray[i] % 3 === 0){
                newArray.push(collection[i])
            }
        }
        return newArray;
    }

答案 6 :(得分:0)

var originalArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
function loveTheThrees(array1) {
  var threes = [];
  for (var i = 0; i < array1.length; i++) {
    if (array1[i] % 3 === 0) {
      threes.push(array1[i]);
    }
  }
  return threes;
}
loveTheThrees(originalArray);

答案 7 :(得分:0)

在ES6中:

const arr = [1, 33, 54, 30, 11, 203, 323, 100, 9];

// This single line function allow you to do it:
const isDivisibleBy3 = arr => arr.filter(val => val % 3 == 0);


console.log(isDivisibleBy3(arr));
// The console output is [ 33, 54, 30, 9 ]