昨天我看到了这篇有趣的帖子,并认为知道如何通过对给定参数进行排序来创建2D数组非常重要: How to get even numbers array to print first instead of odds?
以下是Ori Drori的代码片段。
我很想知道代码行是什么,以及哪个表达式对数据进行排序并创建2D数组。我认为它与[numbersArray [i]%2]有关,但是,余数运算符是否还剩下剩余的余数?
它也有点令人困惑,因为它只为数组设置了一个括号,并使用push()来制作2个不同的数组。
任何能帮助我理解这一点的参考资料也将非常感谢 - 谢谢!
var numbersArray = [1,2,34,54,55,34,32,11,19,17,54,66,13];
function divider(numbersArray) {
var evensOdds = [[], []];
for (var i = 0; i < numbersArray.length; i++) {
evensOdds[numbersArray[i] % 2].push(numbersArray[i]);
}
return evensOdds;
}
console.log(divider(numbersArray));
&#13;
答案 0 :(得分:2)
evensOdds
有2个数组元素。 evensOdds[0]
代表第一个数组,它甚至可以保存nums。 evensOdds[1]
是第二个元素,将保留奇数。
当您% 2
为偶数时,对于奇数,将导致0
和1
。因此,当遍历数组时,您% 2
将返回0
或1
,这使您可以访问evensOdds
数组中的第一个或第二个数组并插入它。
结果数组未排序,但确实表示偶数和奇数之间的分割。要获得排序结果,您需要以下内容:
var numbersArray = [1,2,34,54,55,34,32,11,19,17,54,66,13];
function divider(numbersArray) {
var evensOdds = [[], []];
for (var i = 0; i < numbersArray.length; i++) {
evensOdds[numbersArray[i] % 2].push(numbersArray[i]);
}
return evensOdds.map(array=> array.sort((a,b)=>a-b));
}
console.log(divider(numbersArray));
&#13;
答案 1 :(得分:1)
在共享代码中,$
行是过滤数字并将其插入相应evensOdds[numbersArray[i] % 2]
的部分,使用从array
和0
返回的索引1
表达式:
如果它返回numbersArray[i] % 2
,那么它是一个0
号码,它会被推送到第一个even
,否则如果它返回array
它就会被推送到1
。是一个odd
号,将被推入第二个数组。
另一种选择:
您只需使用Array.filter()
方法过滤evens
和odds
数组:
<强>演示:强>
var numbersArray = [1, 2, 34, 54, 55, 34, 32, 11, 19, 17, 54, 66, 13];
var evens = numbersArray.filter(function(el) {
return el % 2 == 0;
});
var odds = numbersArray.filter(function(el) {
return el % 2 == 1;
});
console.log(evens);
console.log(odds);
&#13;