[英]Javascript loop an array to find numbers divisible by 3
我需要找到使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推入“三次”數組。 希望這是有道理的。
您可以將Array#filter
用於此任務。
filter()
對數組中的每個元素調用一次提供的callback
函數,並為所有值構造一個新數組,為此,callback
返回一個真值或一個強制為true
的值 。 僅對具有指定值的數組索引調用callback
; 對於已刪除或從未分配值的索引,不會調用它。 僅跳過未通過callback
測試的數組元素,並且不包含在新數組中。
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>');
var array = [],
three = [];
function loveTheThrees(array) {
for (i = 0, len = array.length; i < len; i++) {
if(array[i] % 3 == 0){
three.push(array[i]);
}
}
}
console.log([1, 2, 3, 4, 5, 6, 7].filter(function(a){return a%3===0;}));
Array.filter()遍歷數組,如果回調返回true,則將當前對象移動到另一個數組。 在這種情況下,我編寫了一個回調函數,如果該函數可以被三整除,則返回true,因此僅將那些項添加到其他數組中
檢查數字是否可被3整除,然后將其添加到數組。 嘗試這個
function loveTheThrees(array) {
for (i = 0, len = array.length; i < len; i++) {
if(array[i] % 3 == 0){
three.push(array[I]);
}
}
loveTheThrees=(arr)=>arr.filter(el=>Boolean(parseFloat(el)) && isFinite(el) && !Boolean(el%3))
es6版本+跳過非數字
loveTheThrees([null,undefined,'haha',100,3,6])
結果:[3,6]
像Nina一樣建議使用Filter是更好的方法。 但是我假設您是一個初學者,可能還不了解回調,在這種情況下,此功能將起作用:
function loveTheThrees(collection){
var newArray = []
for (var i =0; i< collection.length;i++){
if (myArray[i] % 3 === 0){
newArray.push(collection[i])
}
}
return newArray;
}
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);
在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 ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.