美文网首页
JS中的数组

JS中的数组

作者: 祈念念念 | 来源:发表于2019-01-02 22:13 被阅读0次

title: JS中的数组

date: 2018-9-26 22:42:25
tags: [JavaScript]
categories: JavaScript


数组是什么

数组(array)是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。
其实本质上,数组属于一种特殊的对象。typeof运算符会返回数组的类型是object。

数组的length属性

数组的length属性,返回数组的成员数量。只要是数组,就一定有length属性。

数组的构造方法

var x = new Array(3) ; // 3表示数组的长度,每一个元素都为undefined
var y = new Array(3,3); // 得到一个数组[3,3],是仿自Java中的写法,不常用。
var a = [3,3] ; // 得到了一个数组[3,3],常用

in 运算符 && for…in 循环

for in循环不仅可以遍历对象,也可以遍历数组,因为数组是一种特殊对象。

  • 使用时需要注意,for...in不仅会遍历数组所有的数字键,还会遍历非数字键。

例如:

var a = [1, 2, 3];
a.foo = true;

for (var key in a) {
  console.log(key);
}
// 0
// 1
// 2
// foo

数组的遍历

常用for循环,while循环
或forEach遍历(不支持break 和 continue ,不返回值)

var a = ['a','b','c','d'];

// for循环
for(var i = 0; i < a.length; i++) {
  console.log(a[i]);
}

// while循环
var i = 0;
while (i < a.length) {
  console.log(a[i]);
  i++;
}

// forEach遍历
a.forEach(function(value,key){
  console.log(key+':'+value);
})
// 0:a
// 1:b
// 2:c
// 3:d

什么是伪数组

如果一个对象的所有键名都是正整数或零,并且有length属性,那么这个对象就很像数组,但实际并不是数组。

  • 伪数组的原型链中没有Array.prototype
数组.__proto__ === Array.protype
伪数组对象.__proto__ === Object.prototype

数组的一些API

sort() 排序

该方法是JS封装的一个重排序方法,使用的算法是快速排序。不传参时默认为升序排列。
注:sort()方法返回的是原数组,即使用该方法会改变原来的数组序列。
=>arr.sort(function(a,b){return a-b}) 升序
=>arr.sort(function(a,b){return b-a}) 降序

join() 分隔

该方法返回的是字符串,参数表示用什么分隔数组的每一项,不传参默认逗号分隔,参数为空数组时,数组每一项之间没有间隔。
代码示例:

array = ["a", "b", "c", "d"];
array.join('-');
// "a-b-c-d"

concat() 连接

该方法返回的是新数组,原数组不会被改变。
示例:

a = [1,2,3];
b = [4,5,6];
a.concat(b);
// 新数组 [1, 2, 3, 4, 5, 6]

使用concat()方法还可以用于复制数组
例如:

arr = [1,2,3,4,5];
var newArr = arr.concat([]);
// newArr 的值为 [1, 2, 3, 4, 5]
newArr === arr; // false
// 虽然值相同,但这是两个不同的对象,引用的地址不同

map()

功能与forEach相同,但map()有返回值。同样不会改变原数组的值,返回一个新数组。
示例:

arr = [1, 2, 3, 4, 5];
arr.map(function(value,key){
    return value * 2;
})
// [2, 4, 6, 8, 10]

filter() 过滤、筛选

用法与map()一样。
示例:

arr = [1, 2, 3, 4, 5];
arr.filter(function(value,key){
    return value < 3
})
// [1, 2]

reduce() 可接收一个函数作为累加器

第一个参数传一个函数作为累加器,第二个参数表示初始值。
示例:

arr = [1, 2, 3, 4, 5];
arr.reduce(function(previous,current){
    return previous + current;
}, 0)
// 15

可以用reduce()方法来写map()数组每一项×2:

a = [1, 2, 3, 4, 5];
a.reduce(function(array,n){
    array.push(n * 2);
    return array;
},[])
// [2, 4, 6, 8, 10]

可以用reduce()方法来写filter()筛选偶数:

a = [1, 2, 3, 4, 5];
a.reduce(function(array,n){
    if(n % 2 === 0){
            array.push(n);
        }
    return array;
},[])
// [2, 4]

相关文章

  • 概念集合

    JS中的数组和Arrary的区别 js中的数组就是array对象

  • javaScript的数组

    js中没有数组类型 js 中数组是以内置对象的形式存在 数组定义01 var attr = new Array('...

  • js 数组

    js 中数组的长度发生改变,数组就真的发生改变,快速清空数组就让数组长度为0js 数组的方法

  • js数组

    js中数组是比较常用的对象,同时js中的数组也十分的灵活。一. 创建数组的方式 字面量数组 var arr=[1,...

  • 9. 进阶算法之"搜索排序"

    简介 排序: 把某个乱序的数组变成升序或者降序的数组 搜索:找出数组中某个元素的下标 JS中的排序和搜索 JS中的...

  • js中数组方法的总结

    js中数组的方法非常的多,功能也很强大。今天来总结一下js中数组的方法: 首先创建一个数组,数组中可以包含各种类型...

  • 数组(Array)<迭代器>

    一、Js数组迭代器方法 主要介绍js数组中的forEach,every,some,filter,map迭代器方法 ...

  • js中的数组

    1.关于js中的array对象 Array对象是用于在单个的变量中存储多个值; js数组中的每一项在都能保存任何类...

  • JS中的数组

    目的 了解数组的定义。 了解数组的一些操作,比如:删除,添加,修改等。 前言 学习了智能社的一些 js 课程,觉得...

  • js中的数组

    内置对象 内置对象是JS语言自带对象,提供了一些基本的功能,供开发者来使用。浏览器上跑的内置对象Math,Stri...

网友评论

      本文标题:JS中的数组

      本文链接:https://www.haomeiwen.com/subject/qlatrqtx.html