排序
-
sort()
方法以字母顺序对数组进行排序,于是会造成对数字排序的方法失当;
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort(); // 对 fruits 中的元素进行排序
-
reverse()
方法反转数组中的元素,可以用来对排好序的数组进行逆序化; - 使用
比值函数
来增强sort()
的能力,于是当sort()
函数比较两个值时,会将值发送到比较函数,并根据所返回的值(负、零或正值)对这些值进行排序;
function(a, b){return a-b} //升序
function(a, b){return b-a} //降序
- 针对对象数组的排序也需要用到
比值函数
;
var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}];
cars.sort(function(a, b){return a.year - b.year});
cars.sort(function(a, b){
var x = a.type.toLowerCase();
var y = b.type.toLowerCase();
if (x < y) {return -1;}
if (x > y) {return 1;}
return 0;
});
- 特别地,当对字符串排序时,需要处理成
-1
,0
,1
:
function compare(a,b) {
if (a.last_nom < b.last_nom)
return -1;
if (a.last_nom > b.last_nom)
return 1;
return 0;
}
- 而找数组的最值时,使用排序则过于低效,可以自己编写函数,也可以使用
Math.max.apply(null, array)
与Math.min.apply(null, array)
;
function myArrayMin(arr) {
return Math.min.apply(null, arr);
}
- 随机排序:
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 - Math.random()});
迭代
该类方法均对数组的每一项迭代操作。
-
forEach()
方法为每个数组元素调用一次函数(回调函数)。numbers.forEach(myFunction);
-
function myFunction(value, index, array)
三个参数分别时项目值、项目索引与数组本身,后面两个参数不用时可以省略。
-
map()
方法通过对每个数组元素执行函数来创建新数组,不会更改原始数组。var numbers2 = numbers1.map(myFunction);
function myFunction(value, index, array)
-
filter()
方法创建一个包含通过测试的数组元素的新数组。var over18 = numbers.filter(myFunction);
function myFunction(value, index, array)
-
reduce()
方法在每个数组元素上运行函数,基于total
以生成单个值。-
var sum = numbers1.reduce(myFunction, 100);
可赋初始值给total
。 function myFunction(total, value, index, array)
-
reduceRight()
自右向左
-
-
every()
方法检查所有数组值是否通过测试,返回真假。var allOver18 = numbers.every(myFunction);
function myFunction(value, index, array)
-
some()
方法检查某些数组值是否通过了测试。
-
indexOf(item, start)
方法在数组中搜索元素值并返回其位置。var a = fruits.indexOf("Apple");
- 如果未找到项目,返回 -1,如果项目多次出现,则返回第一次出现的位置。
-
Array.lastIndexOf()
与Array.indexOf()
类似,但是从数组结尾开始搜索。
-
find()
方法返回通过测试函数的第一个数组元素的值。var first = numbers.find(myFunction);
function myFunction(value, index, array)
-
findIndex()
方法返回通过测试函数的第一个数组元素的索引。