自己总结代码题

1.使得 students 按分数的高低从大到小排列

1
var students = ['小明','小红','小花'] var scores = { 小明: 59, 小红: 99, 小花: 80 } students.sort(???)

请填写 ??? 使得 students 按分数的高低从大到小排列

1
2
3
function ( x , y ) {
return scores[y]-scores[x]
}
  1. 1
    2
    var a = [1,2,3,4,5,6,7,8,9]
    a.filter(???).map(???) // [4,16,36,64]
  • 获取所有偶数
  • 得到所有偶数的平方
1
2
3
4
5
a.filter( function ( value , key ) {
return value % 2 === 0
}).map ( function ( value ) {
return value * value
})
  1. 1
    2
    var a = [1,2,3,4,5,6,7,8,9]
    a.reduce(???,???)
    计算所有奇数的和
    1
    2
    3
    4
    5
    a.reduce(function(sum,b){
    if( b % 2 !=0){
    sum = sum + b
    }return sum
    },0)
    数组求和,一般我们的想法都是去遍历数组各项,然后累加。
    那就是这样:
    1
    2
    3
    4
    5
    6
    7
    8
     function sumArr(arr){
    var sum = 0;
    for(var i = 0;i<=arr.length;i++){
    sum += arr[i];//前提是arr中各项是数字,而不是数字字符串
    //如果是数字字符串:sum += Number(arr[i]);
    }
    return sum;
    }

又或者是forEach遍历:

1
2
3
4
5
6
7
function sumArr(arr){
var sum = 0;
arr.forEach(function(val,index,arr){
sum += val;
})
return sum;
}

还有一种比较黑科技的写法:

1
2
3
function sumArr(arr){
return eval(arr.join("+"))
}//直接把他变成各个数的加法运算字符串

当然还有这种被人广泛称赞的函数式编程的写法:

1
2
3
4
5
6
7
function sumArr(arr){
return arr.reduce(function(prev,cur){
return prev + cur;
},0);
}
//reduce方法有两个参数,一个是callbackfunction(回调函数),
//二是设置prev的初始类型和初始值

concat

concat() 方法用于连接两个或多个数组。

该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

1
arrayObject.concat(arrayX,arrayX,......,arrayX)

返回值

返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。

forEach

forEachfindIndex()方法返回满足回调条件的数组中第一个元素的索引。否则将返回1。

1
2
3
arr.forEach(function callback(currentValue, index, array) {
//your iterator
}[, thisArg]);

callback:回调函数。

currentValue:在数组中处理当前元素

index:在数组中处理当前元素的索引。

array:当前数组

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

a.forEach(function(element) {
console.log(element);
});

// a
// b
// c

join

join()将数组中的所有元素(或类似数组的对象)连接到一个字符串中

1
2
arr.join()
arr.join(separator)

separator:分隔符

1
2
3
var a = ['Wind', 'Rain', 'Fire'];
a.join(); // 'Wind,Rain,Fire'
a.join('-'); // 'Wind-Rain-Fire'

keys

keys()方法返回一个新的数组迭代器对象,该对象包含数组中每个索引的键

1
arr.keys()

map

map()方法创建一个新的数组,该数组的结果是调用调用数组中的每个元素的函数

1
2
3
var new_array = arr.map(function callback(currentValue, index, array) {
// Return element for new_array
}[, thisArg])

reduce

reduce()方法对累加器和数组中的每个元素(从左到右)使用一个函数,以将其还原为一个值