关于sort和forEach里面的函数

来源:5-4 [JavaScript]数组方法(下)

深夏之叶

2016-10-17 21:58

var arr =['ap','b','c','d','e'];

			arr.forEach(function(y,x,a){

				console.log(y + '1' + x + '1' + (a===arr))
			});

像这个,参数y x a为什么就是默认指的是数组的序号以及数组的值???还是不太理解这个forEach属性然后里面添加函数这种是什么意思。

var arr =[12,43,4];
			// document.write(arr.sort());
			function w(value1,value2){
				if(value1<value2){
					
					return -1;
				
				}else if(value1>value2){
					
					return 1;
				
				}else{
					
					return 0;
				}
			}
			document.write(arr.sort(w));

还有这个,我也不太理解,为什么在这个sort的参数里面加这么一个函数,就可以使得从小到大排序。。。。

哪位好心人帮忙解答一下

写回答 关注

1回答

  • 楼兰王子
    2016-10-18 11:12:45

    第一个问题:

    forEach函数的声明是这样的:

    forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;

    可以看到,第一个参数是数组的值,第二个是索引,第三个是数组。如果使用时只用一个参数,只会遍历值,不会访问另外两个值。

    第二个问题:

    /**
      * Sorts an array.
      * @param compareFn The name of the function used to determine the order of the elements. If omitted(缺省), 
         the elements are sorted in ascending, ASCII character order.
      */
    sort(compareFn?: (a: T, b: T) => number): T[];

    看见sort可以接收一个比较函数,来决定元素的排序规则,如果缺省,将按ASCII character 规则排序。

    是否还有疑问?

    楼兰王子 回复楼兰王子

    webstorm

    2016-10-18 11:26:43

    共 4 条回复 >

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281101 学习 · 1020 问题

查看课程

相似问题