[英]JavaScript loop push to new array
我試圖將所有可被3整除的數字壓入一個新數組“ threes”,但是卻碰壁了為什么此代碼無法正常工作。
var numbers = function () {
var threes =[]
for (i = 0; i < numbers.length; i++) {
if (iLoveThree[i] % 3 === 0){
threes.push(numbers[i])
}
}
return threes
}
我已經解決了您的問題,創建了一個新的html文件並輸入以下內容:
<!doctype html>
<HTML>
<BODY>
<SCRIPT>
(function(){
var numbers = function (iLoveThree) {
var threes =[];
for (i = 0; i < iLoveThree.length; i++) {
if (iLoveThree[i] % 3 === 0){
threes.push(iLoveThree[i]);
}
}
return threes;
}
alert(numbers([1, 2, 3, 4, 5, 6]));
})();
</SCRIPT>
</BODY>
</HTML>
希望能幫助到你 :)
說明:
-您需要包含函數參數,此參數將在函數內部訪問(該參數名為iLoveThree)
-您使用的是數字變量,但此變量以前未聲明過,我通過將數字更改為iLoveThree來解決此問題
-你錯過了幾個; (分號),很簡單,但會給您帶來很多麻煩
PS:感謝RobG提醒我要提供解釋。
我認為只對數字使用過濾器會更簡單
var threes = numbers.filter(function(number) {
return number % 3 === 0;
});
您的示例有兩個問題:
根據您的應用程序的需要,您可能需要將所有數值都除以最小值和最大值之間的三個數,或者可能需要從預定義數組中抽取可被三除數的數字。 我在下面的代碼中包含了這兩種情況的示例:
var isDivisibleByThree = function(num){ return i % 3 === 0; } var getThrees = function (min, max) { // given a numeric min and max value, // return all numbers from a minimum to a maximum value that are divisible by three var threes =[]; for (i = min; i <= max; i++) { if (isDivisibleByThree(i)){ threes.push(i); } } return threes; } var getThreesFromArray = function(numbers){ // given an array of numbers, // return a subset of that array including only numbers divisible by 3 var threes = []; for (i = 0; i < numbers.length; i++) { if (isDivisibleByThree(numbers[i])){ threes.push(i); } } return threes; } var fromZeroTo50 = getThrees(0, 50); var fromArray = getThreesFromArray([5, 0, 6, 17, 12, 4, 18]); // Grab example values and display them in the HTML for demonstration purposes document.getElementById("fromZeroTo50").innerHTML = fromZeroTo50.join(","); document.getElementById("fromArray").innerHTML = fromArray.join(",");
<h2>Get all threes from 0 to 50: </h2> <div id="fromZeroTo50"></div> <h2>Get threes from a pre-defined array: </h2> <div id="fromArray"></div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.