JavaScript基础-----数组(Array)

1.JavaScript 中创建数组的方法:

(1).使用Array构造函数:

var arr = new Array();    //创建一个空数组
var arr = new Array(5);   //传递一个整数时,表示创建了一个长度为 5 的数组,如果传递一个字符串,则表示创建了包含这个字符串的数组
var arr = new Array(5,"abc",20)    //传递多个元素时,表示创建了包含这些个元素的数组,有多少元素,长度就为多少

(2).使用数组字面量:

var arr = []    //创建一个空数组
var arr = [,,,,,]    //只传递逗号时,表示数组的长度,传递几个逗号,长度为几
var arr = ["abc",2,"123"]    //创建一个包含这些元素的数组

2.数组的一些属性和方法:

(1) length:表示数组中元素的数量

var arr = [1,"456","abc"]
console,log(arr.length)      //输出3(元素的数量)

(2) prototype:向数组添加属性或方法,添加之后,所有创建出来的数组对象都会有此属性或方法(prototype是个全局属性,不仅可以向数组(数组本身就是对象)添加属性或方法,可以向任何对象添加),示例:

//将创建的数组的值都转换为大写字母
Array.prototype.Cap = function(){
    for(var i = 0;i < this.length;i ++){
        this[i] = this[i].toUpperCase();
    }
}
//创建一个数组,调用Cap()方法
var arr = ["ssdj","df","dsf","s"];
arr.Cap();
//在控制台查看结果
console.log(arr)    //输出["SSDJ", "DF", "DSF", "S"]

(3) push():向数组的末尾添加一个或多个元素,并返回新的长度

var arr = [1,"2","abc"];
arr.push("456");
console.log(arr)    //输出[1,"2","abc","456"]

(4) unshift():向数组的开头添加一个或多个元素,并返回新的长度

var arr = [1,"2","abc"];
arr.unshift("你好");
console.log(arr)    //输出["你好",1,"2","abc"]

(5) pop():删除数组的最后一个元素

var arr = [1,"2","abc"];
arr.pop();
console.log(arr)    //输出[1,"2"]

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

var arr = [1,"2","abc"];
arr.shift();
console.log(arr)    //输出["2","abc"]
//当数组为空的时候,则返回undefined

(7) *join():把数组的所有元素组成一个字符串,包括数组中的逗号,而join()中传递的参数,就相当于将数组中的逗号换成那个参数

var arr = ["a","b",2,"f"];
console.log(arr.join())    //输出字符串"a,b,2,f"
//当传递参数时
console.log(arr.join("-"))    //输出"a-b-2-f"

使用join()实现字符串的重复:

function fun(str,n){
    return new Array(n + 1).join(str);
}
console.log(fun("你好",3))    //输出"你好你好你好"
//这里的n就相当于数组中的逗号,new Array(4)就等同于[,,,]

(8) *sort():对数组的元素进行从小到大排序,但是sort()都会将数组中元素转换成字符串再进行比较,包括数值,所以就会出现以下情况:

var arr = [12,5,43,252,3];
arr.sort();
console.log(arr)     //输出[12, 252, 3, 43, 5]

解决以上出现的情况,可以创建一个比较函数,然后用sort()调用那个函数

//比较函数可传递两个参数,如果num1位于num2之前,返回一个负数;相等则返回0;num1位于num2之后,返回一个正数
function fun(num1,num2){
    if(num1 < num2){
       return -1;
    }else if(num1 > num2){
       return 1;
    }else{
       return 0;
    }
}
var arr = [12,5,43,252,3];
console.log(arr.sort(fun))    //输出[3, 5, 12, 43, 252]
//如果需要进行降序,只需交换一下return的值即可

(9) reverse():反转数组中元素的顺序

var arr = ["a","b",2,"f"]
arr.reverse();
console.log(arr)    //输出["f", 2, "b", "a"]

(10) concat():创建一个原数组的副本,并可以添加参数,参数会添加到副本的末尾,且原数组不会有任何改变

var arr = ["a","b",2,"f"]
var arrCopy = arr.concat()
console.log(arrCopy)   //输出["a","b",2,"f"],相当于复制了原数组
var arrCopy1 = arr.concat("你好","haha")
console.log(arrCopy1)   //输出["a","b",2,"f","你好","haha"]
console,log(arr)      //输出原数组,没有发生改变

(11) *slice():截取,创建一个原数组的副本,可添加参数,参数需为数字,数字表示下标,表示从一个数字的下标开始到另一个数字的下标结束(注:不包括结束的下标)

var arr = ["a","b",2,"f","ha"]
        //  0   1  2  3    4
//传递一个参数1,表示从1开始截取(包括1)
var arrCopy = arr.slice(1)
console.log(arrCopy)     //输出["b", 2, "f","ha"]
//传递两个参数,表示从1开始截取到4结束(包括1,但不包括4)
var arrCopy1 = arr.slice(1,4)
console.log(arrCopy1)    //输出["b", 2, "f"]
//当传递的参数为负数时,将负数加上数组的长度length的值来替换该位置的数
var arrCopy2 = arr.slice(1,-1)
console.log(arrCopy2)    //输出["b", 2, "f"]
//该数组length值为5,-1+5=4,所以依然是从1开始截取到4结束(不包括4)

(12) *splice():这是个很重要的数组方法,可以向数组中添加,替换或删除元素

删除:可以删除任意数量的元素,指定 2 个参数:(指定的位置,要删除的元素的个数),如果没有第二个参数时,则指定位置后所有元素都会被删除

var arr = [1,3,5,7,9,11];
var arrCopy = arr.splice(1,2) ;
//从1位置开始删除2个元素
console.log(arr)    //输出[1, 7, 9, 11]

插入:可以向指定位置插入任意数量的元素,指定 3 个参数:(指定的位置,要删除的元素的个数,要添加的元素)

var arr = [1,3,5,7,9,11];
var arrCopy = arr.splice(1,2,4,"6") ;
//从1位置开始删除2个元素,添加4和"6"
console.log(arr)    //输出[1, 4, "6", 7, 9, 11]

(13) indexOf() 和 lastIndexOf()

indexOf:从数组的首字符开始查找数组中元素所在的位置,指定 2 个参数:(要查找的元素,从什么位置开始查找(可选))

var arr1 = [1,3,5,11,7,9,11];
console.log(arr1.indexOf(11))      //输出位置3
console.log(arr1.indexOf(11,4))    //输出位置6,是从第4位置开始检索查找

lastIndexOf:从数组的末尾字符开始查找数组中元素所在的位置,指定的参数同indexOf一样:(要查找的元素,从什么位置开始查找(可选))

var arr1 = [1,3,5,11,7,9,11];
console.log(arr1.lastIndexOf(11))      //输出位置6

(14) map():通过指定函数处理数组的每个元素,最后以数组的形式返回出来

//求下列数组中元素的平方
var arr = [1,2,3,4,5]
var arr2 = arr.map(function(num){
     return num*num;
});
console.log(arr2)   //输出[1, 4, 9, 16, 25]

(15) every():判断数组中每个元素都是否满足给定的条件,且只有所有元素都满足条件时,才会返回true

var arr = [1,2,3,4,5];
var arr3 = arr.every(function(x){
     return x < 8;
})
console.log(arr3)     //输出true
//当有任意一个元素不满足条件时,返回false

(16) filter():“过滤”功能,通过指定函数处理数组的每个元素,最后返回满足过滤条件的数组

//查找下列数组中大于15的元素
var arr = [11,22,13,24,15];
var arr4 = arr.filter(function(x){
     return x > 15;
})
console.log(arr4)      //输出[22, 24]

3.类数组(伪数组):

定义:类数组本质是一个对象,但是可以利用对象和数据的特性,模拟成数组,且必须要含有length属性,示例:

var obj = {
    0 : "a",
    1 : "b",
    2 : 8,
    3 : "c",
    length : 4,
    push : Array.prototype.push,   //这个类数组就有了push这个方法
}
obj.push("d")       //在数组的末尾添加一个"d"
console.log(obj.length)    //此时输出的length为5,表示添加成功

类数组转换为数组,以上面代码为例:

var obj1 = Array.prototype.slice.call(obj)
console.log(obj1)    //输出数组["a", "b", 8, "c"]

*下面是一道关于类数组的面试题

var obj = {
     "2" : "a",
     "3" : "b",
     "length" : 2,
     "push" : Array.prototype.push
}
obj.push("c");
obj.push("d");
// 问最后这个console.log(obj)输出的是什么?
// 解答:
// "2" : "a",  -->    等同于 "0" : "a"
// "3" : "b"   -->    等同于 "1" : "b"
// push("c")   -->    等同于 "2" : "c"
// push("d")   -->    等同于 "3" : "d"
// 所以最后添加上去的"c"和"d"会将之前的"a"和"b"的值覆盖,length的值为4  

原文地址:https://www.cnblogs.com/hyi520/p/9195831.html

时间: 2024-08-29 14:17:29

JavaScript基础-----数组(Array)的相关文章

JavaScript中数组Array.sort()排序方法详解

JavaScript中数组的sort()方法主要用于对数组的元素进行排序.其中,sort()方法有一个可选参数.但是,此参数必须是函数. 数组在调用sort()方法时,如果没有传参将按字母顺序(字符编码顺序)对数组中的元素进行排序,如果想按照其他标准进行排序,就需要进行传一个参数且为函数,该函数要比较两个值,并且会返回一个用于说明这两个值的相对顺序的数字. 1.对数字数组进行由小到大的顺序进行排序. 代码: var arr = [22,12,3,43,56,47,4]; arr.sort();

javascript基础(Array)

1,join() Array.join(),不改变原数组,将数组中所有元素转换为字符串并连接在一起,返回最后生成的字符串 let a=[1,2,3]; a.join(); // =>"1,2,3" a.join(" "); // =>"1 2 3" a.join("-"); // =>"1-2-3" let b=new Array(5); b.join("-"); //

JavaScript基础数组的字面声名法(010)

1.两种方法的对比 数组在JavaScript中,就像大多数的其它语言 一样,是对象.我们可以使用JavaScript内置的数组构造函数Array()来创建数组.就象对象的字面声名法一样,数组也可以采用字面法来声名. 而且我们建议使用数组的字面声名法.下面来看看这两种创建数组的方法: // array of three elements // warning: antipattern var a = new Array("itsy", "bitsy", "

JavaScript中数组Array方法详解

ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方法将数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串.可以指定一个可选的符号或字符串在生成的字符串中来分隔数组的各个元素.如果不指定分隔符,默认使用逗号.注意:此方法不会改变原始数组 var arr = ['a', 'b', 'c']; console.log(arr.join());

javascript基础--数组,字符串操作,Math函数

数据的操作方法: 1 var arr = [1,2,3,4,5]; 2 3 arr.push(6,7);//可以在数组的最后一位开始添加数列(1+);并返回数组的长度. 4 5 arr.pop();//删除数组的最后一位.并返回那一位数组的内容. 6 7 arr.shift();//删除数组的第0位,并返回那一位数组的内容. 8 9 arr.unshift(-1,0);//从数组的第0位前,添加数列,并返回数组的长度. 10 11 arr.join('');//将每列数组按照指定的符号或者不设置

Java基础——数组Array

一.数组基本概念 数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们. 数组有三个特点: 1. 其长度是确定的.数组一旦被创建,它的大小就是不可以改变的.不可越界,如果越界,则报:ArrayIndexOutOfBoundsException 2. 其元素必须是相同类型,不允许出现混合类型. 3. 数组中的元素可以是任何数据类型,包括基本类型和引用类型. 数组不属于八种基本数据类

javascript基础数组,字符串的操作和冒泡函数等

 数组 var arr = new Array(2,1,5,6,7,4,9); var arr2 = Array(1,2,"33"); //省略new来创建数组 var arr3 = [1,2,"33"]; //通过常量来创建数组 Math.random(); //0~1之间任意的数. for(var i in arr){document.write(arr[i]+" ");} //另一种遍历arr的方式.这个方法要比for循环效率高 1.栈结构

JavaScript基础——数组

一 .数组的介绍 1.概念:数据的集合,任何数据都可以放在数组中 2.作用:可以同时操作多个数据 3.数组的创建: 字面量:var arr = [ ]; 构造函数:var arr = new Array( ); var arr = [234,"hello"]; var arr2 = new Array(234,"hello"); console.log(arr); console.log(arr2); console.log(arr == arr2); //fals

Javascript基础系列之(四)数据类型 (数组 array)

字符串,数值,布尔值都属于离散值(scalar),如果某个变量是离散的,那么任何时候它只有一个值. 如果想使用变量存储一组值,就需要使用数组(array). 数组是由多个名称相同的树值构成的集合,集合中每个数组都是数组的元素(element),可以使用变量team存储团队里每个成员的名字. 在JavaScript中,数组使用关键字 Array声明创建,同事还可以声明变量的长度length.例如 var aTeam = new Array(12);//声明变量的长度 在无法预知数组的最终个数时,声