JS数组总结

        最近在学习数据结构,作为前端最常用的数据结构——数组,无疑是最重要的。现在我想总结一下数组的常用方法。

一、创建数组  

// 创建一个空数组         
var numbers = [ ]
// 指定长度为10的数组    
var numbers = new Array(10)

二、判断数组

// 可以调用 Array.isArray() 来判断一个对象是否是数组

var arr = [7,4,1776];

console.log(Array.isArray(arr));  // true

三、由字符串生成数组

​​​​​​​// 调用字符串对象的 split() 方法也可以生成数组。

var sentence = "the quick brown fox jumped over the lazy dog";

var words = sentence.split(" ");

四、查找元素 ​​​​​​​

indexOf( ) // 函数总是返回第一个与参数相同的元素的索引,如果不包含,就返回 -1。

lastIndexOf( ) // 该函数返回相同元素中最后一个元素的索引,如果没找到相同元素,则返回 -1
  1. 五、数组的字符串表示

// 有两个方法可以将数组转化为字符串:join() 和 toString()。
// 这两个方法都返回一个包含数组所有元素的字符串,各元素之间用逗号分隔开。

var names = ["David", "Cynthia", "Raymond", "Clayton", "Mike", "Jennifer"];

var namestr = names.join( ); // David,Cynthia,Raymond,Clayton,Mike,Jennifer

namestr = names.toString( );   // David,Cynthia,Raymond,Clayton,Mike,Jennifer

​​​​​​​六、由已有数组创建新数组

// concat 方法可以合并多个数组创建一个新数组。
arr1.concat(arr2);

// splice ( ) 方法截取一个数组的子集创建一个新数组。
var nums = [1,2,3,100,200,300,400,4,5];

nums.splice(3,4);

console.log(nums); // 1,2,3,4,5

七、为数组添加/删除元素

push( )  // 将一个元素添加到数组末尾.

unshift( ) // 将元素添加在数组的开头

pop( ) // 删除数组末尾的元素:

shift( ) // 删除数组的第一个元素

// 从数组中间位置添加和删除元素

// splice() 方法为数组删除、添加元素:
// 起始索引(也就是你希望开始添加元素的地方);

// 需要删除的元素个数(添加元素时该参数设为 0);

// 想要添加进数组的元素。

var nums = [1,2,3,7,8,9];

nums.splice(3,0,4,5,6);

console.log(nums); // 1,2,3,4,5,6,7,8,9

八、为数组排序

reverse( ) // 将数组中元素的顺序进行翻转。
sort( )  // 对数组进行排序
// 如果元素是字符串类型,那么数组的可变方法就非常好使:

["David","Mike","Cynthia","Clayton","Bryan","Raymond"].sort() 
//Bryan,Clayton,Cynthia,David,Mike,Raymond

// 数字类型的话:

var nums = [1,7,8,2,5];

nums1.sort((a, b)=>{return a - b})  // [1,2,5,7,8]

九、迭代器方法(不生成新数组的迭代器方法

forEach()  // 该方法接受一个函数作为参数,对数组中的每个元素使用该函数。
function square(num) {

    console.log(num, num * num);

}

var nums = [1,2,3,4,5,6,7,8,9,10];

nums.forEach(square);



every()  // 该方法接受一个返回值为布尔类型的函数,对数组中的每个元素使用该函数。
// 如果对于所有的元素,该函数均返回 true,则该方法返回 true。
var names = ["abc", "cb", "mba", "dna"]

// 判断数组的元素是否都包含a字符

var flag = names.every(function (t) {

    return t.indexOf('a') != -1

})

alert(flag)



some()  
// 该方法也接受一个返回值为布尔类型的函数
// 只要有一个元素使得该函数返回 true,该方法就返回 true。


reduce()  //该方法接受一个函数,返回一个值。
// 该方法会从一个累加值开始,不断对累加值和数组中的后续元素调用该函数,
// 直到数组中的最后一个元素,最后返回得到的累加值。
// 下面这个例子展示了如何使用 reduce() 方法为数组中的元素求和:

var nums = [1,2,3,4,5,6,7,8,9,10];

var sum = nums.reduce( (runningTotal, currentValue)=> {
    return runningTotal + currentValue 
}) // 55

十、迭代器方法(生成新数组的迭代器方法

        有两个迭代器方法可以产生新数组:map() 和 filter()。

  1. map() 和 forEach() 有点儿像,对数组中的每个元素使用某个函数。

返回值

map

返回一个新数组

forEach

没有返回值

var grades = [77, 65, 81, 92, 83];

var newgrades = grades.map(grade=> return grade += 5);   // 82, 70, 86, 97, 88
  1. filter() 和 every() 类似,传入一个返回值为布尔类型的函数。

返回值

filter

返回一个新数组

every

返回 true

var names = ["abc", "cb", "mba", "dna"]

// 获取names中所有包含'a'字符的元素

var newNames = names.filter(function (t) {

    return t.indexOf("a") != -1

})

console.log(newNames) //["abc",  "mba", "dna"]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值