HTML5学堂:每天一道题,强壮程序员!今日主要涉及01.06日,数组操作题目的解答,以及一道涉及数组拼接的题目。
01.06日真题题目如下,最终输出的结果是多少?
<script>
var a = [33, 2, 111, 88, 121];
console.log(a.sort());
function ascending(a, b) { return a-b;}
console.log(a.sort(ascending));
function descending(a, b) { return b-a;}
console.log(a.sort(descending));
</script>
本题目的分别答案是:[111, 121, 2, 33, 88]、[2, 33, 88, 111, 121]、[121, 111, 88, 33, 2]。
答案解析:本题目主要涉及数组元素的操作。
sort()方法将数组中的元素排序并返回排序后的数组。当不带参数调用sort()时,数组元素以字母表顺序排序输出,即上题中的第一个输出语句输出的结果。
为了按照其他的方式而非字母表的顺序进行数组的排序,必须给sort()方法传递一个函数。该函数决定了它的两个参数在排序好的数组中的先后顺序。
所以,假设第一个参数要在前面,比较函数应该返回的是一个小于0的数值,如上题的ascending()函数,返回的是a-b的值,数组按照升序输出[2, 33, 88, 111, 121]。
假设第一个参数要在后面,比较函数应该返回的是一个大于0的数值,如上题的descending()函数,返回的是b-a的值,数组按照降序输出[121, 111, 88, 33, 2]。
相关知识链接:数组与字符串
<script>
var num = [1, 3, 5];
console.log(num.concat(7, 9));
console.log(num.concat([7, 9]));
console.log(num.concat([7, 9], [11, 13]));
console.log(num.concat(7, [9, [11, 13]]));
</script>