操作数据的方法有很多,我们在日常开发过程中会经常用到这些方法,今天把这些方法仔细的总结一下。
常用的方法包含如:concat,every,filter,find,findIndex,forEach,indexOf,lastIndexOf,map,pop,push,reverse,shift,some,sort,splice,toString,unshift等.
首先先了解一下会修改原数组的一些方法:
pop()
该方法会从数组中移除并返回最后一个数组,同时改变数组的长度。如果原数组为空,则返回值为undefined
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var popped = myFish.pop();
console.log(myFish); // ['angel', 'clown', 'mandarin' ]
console.log(popped); // 'sturgeon'
var myBooks = [];
var book = myBooks.pop();
console.log(myBooks); // [ ]
console.log(book); // undefined
push()
该方法将一个或多个元素添加到数组的末尾并返回数组的新长度。
var animals = ['pigs', 'goats', 'sheep'];
console.log(animals.push('cows'));// 4
console.log(animals);// ["pigs", "goats", "sheep", "cows"]
animals.push('chickens');
console.log(animals);// ["pigs", "goats", "sheep", "cows", "chickens"]
reverse()
该方法将阵列反转。第一个数组元素成为最后一个,最后一个数组元素成为第一个。
var array1 = ['one', 'two', 'three'];
console.log('array1: ', array1);// ['one', 'two', 'three']
var reversed = array1.reverse();
console.log('reversed: ', reversed);// ['three', 'two', 'one']
console.log('array1: ', array1);// ['three', 'two', 'one']
shift()
该方法从数组中删除第一个元素并返回已删除的元素。此方法更改数组的长度
var array1 = [1, 2, 3];
var firstElement = array1.shift();
console.log(array1);// [2, 3]
console.log(firstElement);// 1
sort(Fn))
该方法对数组中的元素进行排序并返回已排序的数组。
sort中的Fn是可选的,默认状态排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的。
var months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months);// expected output: Array ["Dec", "Feb", "Jan", "March"]
var array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1);//[1, 100000, 21, 30, 4]
sort 中的fn(a,b)是用于指定定义排序顺序的函数。如果省略,则将数组元素转换为字符串,然后根据每个字符的[Unicode]代码点值进行排序。
a 第一个用于比较的元素。
b 第二个要素进行比较
如果fn(a, b)小于0,则排序a为低于b (即a先到达)的索引。
如果fn(a, b)返回0,离开a,并b相对于彼此不变,但对于所有不同的元素进行排序。
如果fn(a, b)大于0,则排序b为低于a (即b首先出现)的索引。
var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers);// [1, 2, 3, 4, 5]
var items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
{ name: 'The', value: -12 },
{ name: 'Magnetic', value: 13 },
{ name: 'Zeros', value: 37 }
];
// 按值排序
items.sort(function (a, b) {
return a.value - b.value;
});
// 按名字排序
items.sort(function(a, b) {
var nameA = a.name.toUpperCase(); // 忽略大小写
var nameB = b.name.toUpperCase(); // 忽略大小写
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
// 名称相同的情况
return 0;
});
splice()
该方法通过删除或替换现有元素和/或[在适当位置]添加新元素来更改数组的内容。
var arrDeletedItems = array .splice(start [,deleteCount [,e1 [,e2 [,...]]]])
start: 要开始更改数组的索引。如果大于数组的长度,start则将设置为数组的长度。如果是负数,它将从数组的末尾开始有许多元素(原点为-1,意思是-n是第n个最后一个元素的索引,因此等于索引array.length - n)。如果绝对值 start大于数组的长度,则它将从索引0开始。
deleteCount :可选,一个整数,指示要从中删除的数组中的元素数。
如果deleteCount省略,或者它的值等于或大于array.length - start(即,如果它等于或大于数组中剩余的元素数,从start开始),那么所有元素从start 数组到结尾将被删除。
如果deleteCount为0或负数,则不删除任何元素。在这种情况下,您应该至少指定一个新元素。
item1, item2, ... 可选的
要添加到数组的元素,从 start开始。如果未指定任何元素,splice()则只会从数组中删除元素。
arrDeletedItems:包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果未删除任何元素,则返回空数组
例子:从索引2中删除0(零)元素,并插入“drum”
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2, 0, 'drum');
// myFish = ["angel", "clown", "drum", "mandarin", "sturgeon"]
// removed = []
例子:从索引2中删除1个元素,然后插入“trumpet”
var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
var removed = myFish.splice(2, 1, 'trumpet');
// myFish = ["angel", "clown", "trumpet", "sturgeon"]
// removed = ["drum"]
unshift()
该方法将一个或多个元素添加到数组的开头,并返回数组的新长度。
var lastLength = arr.unshift(e1 [,... [,en ]])
en:要添加到数组前面的元素。
lastLength:返回新数组的长度。
let arr = [4,5,6];
arr.unshift(1,2,3);
的console.log(arr); // [ 1,2,3,4,5,6 ]
arr = [4,5,6]; //重置数组
arr.unshift(1);
arr.unshift(2);
arr.unshift(3);
console.log(arr); // [ 3,2,1,4,5,6]
let arr = [1, 2];
var lastLength = arr.unshift(0); // lastLength = 3
// arr = [0, 1, 2]
lastLength = arr.unshift(-2, -1); // lastLength = 5
// arr = [-2, -1, 0, 1, 2]
lastLength = arr.unshift([-4, -3]); // lastLength = 6
// arr = [[-4, -3], -2, -1, 0, 1, 2]
lastLength = arr.unshift([-7, -6], [-5]); //lastLength= 8
// arr = [ [-7, -6], [-5], [-4, -3], -2, -1, 0, 1, 2 ]
今天就先总结一下会改变原始数组的一些方法。下次再讲一讲不会改变原始数组,但是会返回一些数组的特定属性的方法。