这篇文章带大家复习一下使用JavaScript进行数组的基础操作,顺便带大家复习一遍JavaScript中对数组元素进行操作的方法。说到方法,想起自己做题时候,第一反应是先开个for循环遍历元素,然后再进行操作,完全忘了有那么多已经封装好的方法可以直接使用,简直傻到飞起。所以大家一定要熟悉这些常用方法呀。下面将一一说明。
查找数组元素位置
找出元素 item 在给定数组 arr 中的位置。如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1。
function indexOf(arr, item){
for(var i=0; i<arr.length; i++){
if(arr[i] == item){
return i;
}
}
return -1;
}
数组求和
计算给定数组 arr 中所有元素的总和。输入描述:数组中的元素均为 Number 类型。如:输入例子:sum([ 1, 2, 3, 4 ]);输出例子:10。
常规循环
function sum(arr) {
var sum = 0;
for(var i=0; i<arr.length; i++){
sum += arr[i];
}
return sum;
}
使用js中的eval() & join()函数
function sum(arr) {
return eval(arr.join("+"));
};
这里需要掌握两个函数的用法:
- eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。语法:eval(string)。其中string是要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。返回值为计算值。提示:虽然 eval() 的功能非常强大,但在实际使用中用到它的情况并不多。
- join() 方法用于把数组中的所有元素放入一个字符串。语法:arrayObject.join(separator)。seperator可选参数。返回值是一个字符串。
使用forEach()函数
function sum(arr) {
var s = 0;
arr.forEach(function(val, arr) {
s += val;
}, 0);
return s;
};
移除数组中的元素
移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组。
function remove(arr, item) {
var newArray = [];
for(var i=0; i<arr.length; i++){
if(arr[i] != item){
newArray.push(arr[i]);
}
}
return newArray;
}
这道题重点是不能直接修改原数组,因此要创建一个新数组作为返回。这里记住push()函数的用法。该方法可向数组的末尾添加一个或多个元素,并返回新的长度。
又一道移除数组中的元素题
移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回。
function removeWithoutCopy(arr, item) {
for(var i=0; i<arr.length; i++){
if(arr[i] == item){
arr.splice(i,1);
i--;
}
}
return arr;
}
这道题要求在原数组上进行操作。删除元素,可使用splice()函数。splice()方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。P.S:几乎所有主流浏览器都支持splice()方法。
添加元素
在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组。
常规迭代拷贝
var append = function(arr, item) {
var length = arr.length,
newArr = [];
for (var i = 0; i < length; i++) {
newArr.push(arr[i]);
}
newArr.push(item);
return newArr;
};
使用concat()方法
function append(arr, item) {
var newArray = [];
newArray = arr.concat(item);
return newArray;
}
使用concat()传入的数组或非数组值与原数组合并,组成一个新的数组并返回。语法:arrayObject.concat(arrayX,arrayX,……,arrayX),其中arrayX是必需的,该参数可以是具体的值,也可以是数组对象。可以是任意多个。返回值:返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
删除数组最后一个元素
删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组。
function truncate(arr) {
var l = arr.length;
return arr.slice(0,l-1);
}
记住一个slice() 方法,该方法可从已有的数组中返回选定的元素。语法:arrayObject.slice(start,end)。其中,start必需,可为负;end可选。返回值:返回一个新的数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
添加元素
在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组 。
function prepend(arr, item) {
return [item].concat(arr);
}
删除数组第一个元素
删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组。
function curtail(arr) {
return arr.slice(1);
}
数组合并
合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组。
function concat(arr1, arr2) {
return arr1.concat(arr2);
}
添加元素
在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组。
function insert(arr, item, index) {
return arr.slice(0,index).concat(item, arr.slice(index));
}
计数
统计数组 arr 中值等于 item 的元素出现的次数。
function count(arr, item) {
var num = 0;
for(var i=0; i<arr.length; i++){
if(arr[i] == item){
num++;
}
}
return num;
}
查找重复元素
找出数组 arr 中重复出现过的元素。
function duplicates(arr) {
var final = [];
for(var i=0; i<arr.length; i++){
for(var j=i+1; j<arr.length; j++){
if(arr[i] == arr[j] && final.indexOf(arr[i])== -1){
final.push(arr[i]);
}
}
}
return final;
}
求二次方
为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组。
function square(arr) {
var newArr = [];
for(var i=0;i<arr.length;i++){
newArr[i] = arr[i] * arr[i];
}
return newArr;
}
查找元素位置
在数组 arr 中,查找值与 item 相等的元素出现的所有位置。
function findAllOccurrences(arr, target) {
var newArr = [];
for(var i=0; i<arr.length; i++){
if(arr[i] == target){
newArr.push(i);
}
}
return newArr;
}
总结
至此,js的数组操作复习告一段落。总结:Array对象方法见下图。
希望这篇总结对你有所帮助。记得点赞。么么哒。