我要解决的问题如下-
splitEven(a)
–该函数接受整数数组,并返回
包含位于原始偶数索引中的值的数组
数组,按升序排序。
例如,如果函数获取数组[3, 1, 6, 7, 4]
,它将返回该数组
[3, 4, 6]
这是我的解决方案-
function splitEven(a){
var b = [];
var even = function(element){
return element % 2 === 0;
}
for (var i = 0; i < a.length; i++) {
var c = even(a[i]);
if (c) {
b.push(a[i])
}
}
return b;
}
但是,我觉得做我做的事情不是最佳实践。我对Java很熟悉,而且我认为我倾向于以错误的方式解决问题。
您能想到解决此问题的更好方法,以改善我的做法吗?
答案 0 :(得分:6)
您可以使用filter
创建一个仅包含原始数组中偶数个索引的数组,然后使用sort()
该数组:
const splitEven = arr => arr
.filter((_, i) => i % 2 === 0)
.sort((a, b) => a - b);
console.log(
splitEven([3, 1, 6, 7, 4])
);
console.log(
splitEven([3, 1, 6, 7, 4, 11, 12])
);
答案 1 :(得分:1)
另一种简化代码的方法是使用嵌套在IF
循环中的FOR
语句。
function splitEven(array) {
var even = [];
for (let i = 0; i < array.length; i++) {
if (array[i] % 2 == 0) {
even.push(array[i]);
}
}
return even;
}
答案 2 :(得分:1)
您可以增加2而不是1,最后使用sort()
。
function splitEven(array){
var b = [];
for (i = 0; i < array.length; i += 2){
b.push(array[i]);
}
b.sort((a,b) => {return a-b;});
return b;
}