2017-08-28 81 views
1

问题: 创建一个程序,提示用空格分隔的数字列表。让程序打印出一个只包含偶数的新列表。仅打印偶数

将输入转换为(数组)。许多语言可以很容易地将字符串转换为具有内置函数的数组,该函数根据指定的分隔符分割字符串。 编写您自己的算法 - 不要依赖于语言的内置过滤器或类似的枚举功能。 使用名为“filterEvenNumbers”的函数来封装此逻辑。该函数接受旧数组并返回新数组。

所有我对这个笔记:

//global array 
    var arr = []; 

    var arr = prompt("Enter your numbers"); 
    // var eachNumber = arr.split(","); 
    var res = arr.split("");   
    console.log(arr); 
    console.log(res); 


    if(res =) 

    // var str = "How are you doing today?"; 

    //push elements into array 
    // arr.push(prompt("Enter in a bunch of numbers", "")); //push input to array 
    // console.log(arr); 

    // https://stackoverflow.com/questions/28252888/javascript-how-to-save-prompt-input-into-array 
    // var arr = prompt("Enter your numbers").split(","); 
    // console.log(arr); 
    // var arr = []; 
    // for(var i = 0; i < 10; i++) 
    // arr.push(prompt("Enter a number"); 




    // Convert number into array in Javascript 
    // https://stackoverflow.com/questions/20730360/convert-number-into-array-in-javascript 
    // var numbers = "1, 2, 3"; 
    // var eachNumber = numbers.split(","); 
    // /* now parse them or whatso ever */ 
    // console.log(eachNumber); 




// JavaScript Array filter 
// http://www.diveintojavascript.com/core-javascript-reference/the-array-object/array-filter 
// The JavaScript Array filter method iterates over each value of an array passing it to a callback function. 
// If the callback function returns true, the current value is then pushed into the resulting array. 
// The callback function is invoked with three arguments: the value of the element, the index of... 
// the element and the Array object being traversed.   

// Bellow is an example of filtering odd and even numbers out of an array: 
    // var arr = [1, 2, 3, 4, 5]; 
    // var odd = arr.filter(function(val) { 
    //  return 0 != val % 2; 
    // }); 
    // // odd = [1, 3, 5] 
    // var even = arr.filter(function(val) { 
    //  return 0 == val % 2; 
    // }); 
    // even = [2, 4] 
    // console.log(even); 

// The Array filter method can also be used to remove empty, null or undefined elements from an array: 

    // var arr = [0, null, 42, undefined, "", true, false, NaN, "", "foo bar"]; 
    // var filteredArr = arr.filter(function(val, num) { 
    //  return !(val === "" || typeof val == "undefined" || val === null); 
    // }); 
    // // // filteredArr = [0, 42, true, false, NaN, "foo bar"] 

    // console.log(filteredArr); 
+0

好的...那么问题在哪里?你有什么尝试? – Dekel

+2

我们不是来做你的功课。 – Ronnie

+1

这看起来非常像功课。为什么不刺激自己实现所需的逻辑,如果你陷入困境,那么请寻求帮助。你永远不知道,也许你甚至会学到一些东西。 – Dan

回答

4
var a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 
b = []; 

for (var i = 0; i < a.length; ++i) { 
if ((a[i] % 2) === 0) { 
    b.push(a[i]); 
} 
} 

这是发现和推动偶数到另一个数组的数组的例子。你可以很容易地改变它,它不会将它推到另一个数组,而是会打印偶数。它会帮助你解决你的问题

0

有没有你不明白的问题的一部分?你有什么麻烦?

为了提示用户输入,您可以使用window.prompt('Enter a list of numbers separated by spaces'); 这种接收用户输入的方式将返回一个字符串。既然你不能使用内置的方法来把这个变成一个列表,你可以采取一种方法是:

  1. 存储用户输入通过串中的每个字符变量
  2. 迭代。定义一个变量currentInteger,该变量用于保存字符串中当前正在查看的数字的数字(请记住:数字可以长于一个数字,因此,在迭代字符串时,当前数字可能不会由单个字符表示正在看)
  3. 一旦你到达一个空间,你知道currentInteger已完成,追加到一个新的列表,如果它是一个偶数。

由于您的currentInteger变量是一个字符串,您将需要使用parseInt()来使它成为一个数字并检查它是否是偶数。