美文网首页
07-30(数组)

07-30(数组)

作者: 是小张啊啊 | 来源:发表于2018-07-31 09:47 被阅读84次

创建数组(两种方式)

1.使用Array构造函数 var arr = new Array();

var arr = new Array(1);//表示该数组长度为1
var arr = new Array('1');//表示该数组中有一个字符串元素1,且长度也为1
var arr = new Array(1,2,3,4);//数组元素包括值1,2,3,4,长度为4
var arr = new Array('red','green','yellow');//数组中有三个字符串类型的元素

2.使用字面量方法,多个项由逗号隔开

var arr = [];//空数组
var arr = [1,2,3,4];
var arr = [1,2,3,];//会创建一个元素为1,2,3或为1,2,3,undefined的数组(ie8及以下浏览器中)

判断是否为数组(两种方式)

1.使用instanceof,返回值为布尔类型

var arr = new Array();
console.log(arr instanceof Array);//true

2.使用isArray()方法,返回值为布尔类型

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

数组的方法

一、所有对象都具有的转换方法(1.valueOf(),2.toString(),3.toLocaleString())

console.log(arr.valueOf());//返回原数组对象
console.log(typeof arr.toString());//返回由数组中的每个元素用逗号拼接成的字符串
console.log(typeof arr.toLocaleString());//同样是返回字符串,与toString()不同的是,该数组中的每一项元素都要调用toLocaleString()方法

二、栈方法(先进后出 4.pop() 5.push())

var arr = [2,6,3,4,6];
alert(arr.pop());// 删除数组最后一个元素,返回最后一个元素6
alert(arr.push('c',2,3));//从数组末尾添加一个或多个元素,返回新数组数组的长度8

三、 6.shift() 7.unshift())

var arr = [2,6,3,4,6];
alert(arr.shift());// 删除数组第一个元素,返回该元素2
alert(arr.unshift('c',2,3));//从数组头部添加一个或多个元素,返回新数组的长度

四、位置方法(8.indexOf() 9.lastIndexOf())
当找不到时,返回-1
接受一个参数时:
indexOf(value);返回从索引位置0开始计数查找,返回value值第一次出现的索引位置

var arr = new Array(50,20,20,1,2,3);
var a = arr.indexOf(20);//1

lastIndexOf(value);//返回从数组末尾开始计数查找,返回value值第一次出现的索引位置

var arr = new Array(50,20,20,1,2,3);
var a = arr.lastIndexOf(20);
console.log(a);//2

接受两个参数时:value代表要查找的数值,index代表要查找的起始位置(从哪开始查找)
indexOf(value,index);

var arr = new Array(50,20,20,1,2,3);
var a = arr.indexOf(1,3);
console.log(a);//3
var arr = new Array(50,20,20,1,2,3);
var a = arr.indexOf(1,4);
console.log(a);//-1

lastIndexOf(value,index)

var arr = new Array(50,20,20,1,2,3);
var a = arr.lastIndexOf(1,4);
console.log(a);//3
var arr = new Array(50,20,20,1,2,3);
var a = arr.lastIndexOf(1,2);
console.log(a);//-1

五、重排序方法(10.reverse() 11.sort())
reverse()反转数组项的顺序

var arr = new Array('a','b','c');
var a = arr.reverse();
console.log(a);//返回新数组  ['c','b','a']
var arr = new Array(1,2,3);
var a = arr.reverse();
console.log(a);//返回新数组  [3,2,1]

sort()方法可以接收一个比较函数作为参数
原理:对数组中的每一项调用toString()方法,转化成字符串,再进行大小比较,最终返回新的数组

var arr = new Array('da','aba','c');
console.log(arr.sort());//["aba", "c", "da"]
var arr = new Array(1,2,3,12,35);
console.log(arr.sort());// [1, 12, 2, 3, 35]

利用sort()方法进行数值排序(通过自定义比较函数,并将该函数作为参数传给sort()方法即可)

//从小到大排序
var arr = new Array(1,2,3,12,35);
function compare(value1,value2){
    if(value1<value2){
        return -1;
    }else if(value1 < value2){
        return 1;
    }else{
        return 0;
    }
}
//数值型可以采用如下方法
/*
function compare(value1,value2){
   return value1 - value2;
}
*/
console.log(arr.sort(compare));// [1, 2, 3, 12, 35]

六、操作方法(12.join() 13.slice() 14.concat() 15.splice(index,num,item1,item2,item3...))
join('-')只接收一个参数,即作为连接数组的分隔符,返回拼接好后的字符串

var arr = new Array(1,2,3,12,35);
console.log(arr.join('-'));//1-2-3-12-35
console.log(typeof arr.join('-'));//string

slice()接收一个或两个参数,如果不写参数,则返回空数组
当接收一个参数时,返回从该索引位置开始到结束位置的所有数组项,不改变原数组

var arr = new Array(1,2,3,12,35);
console.log(arr.slice(3));//[12, 35]
console.log(arr.length);//5

当接收两个参数时,返回从index1开始到index2结束的所有数组项,不包括index2项

var arr = new Array(1,2,3,12,35);
console.log(arr.slice(2,4));//[3, 12]

concat()
可以传递一到多个数组,会将数组中的每一项都添加到原数组中,返回新的数组,原数组保持不变

var arr = new Array(1,2,3,12,35);
var a = ['a','b','c'];
var b = [66,88,11];
var c = arr.concat(a,b);
console.log(c);//[1, 2, 3, 12, 35, "a", "b", "c", 66, 88, 11]
console.log(arr);//[1, 2, 3, 12, 35]

如果传递的不是数组,则同样被添加到原数组末尾,返回新的数组,原来数组保持不变

var arr = new Array(1,2,3,12,35);
console.log(arr.concat('a',1));//[1, 2, 3, 12, 35, "a", 1]

如果不写参数,则返回原来的数组

var arr = new Array(1,2,3,12,35);
console.log(arr.concat());//[1,2,3,12,35]

splice(index,num,item1.item2,item3)可以在数组的任意位置插入、删除、替换一个或多个元素,返回新的数组,原数组改变
插入元素:(从索引位置为index之前,删除num=0个元素,插入item1,item2..个元素)

var arr = new Array(1,2,3,12,35);
arr.splice(1,0,'a','b');
console.log(arr);//[1, "a", "b", 2, 3, 12, 35]

删除元素:(从索引位置为index开始,包括等于索引index的元素,直接删除num个元素)

var arr = new Array(1,2,3,12,35);
arr.splice(1,2);
console.log(arr);//[1, 12, 35]

替换元素:(从索引位置为index开始,包括索引位置等于index的元素,删除num个元素,再插入对应的元素)

var arr = new Array(1,2,3,12,35);
arr.splice(1,2,'99','88','77');
console.log(arr);//[1, "99", "88", "77", 12, 35]

七、迭代方法(16.filter() 17.every() 18.some() 19.forEach() 20.map())
数组调用这些方法,每个方法都接收两个参数:要在数组中的每一项运行的函数,和运行该函数的作用域对象
传入每一项运行的函数都接收三个参数:数组中的每一项元素,该项在数组中的位置,数组对象本身
filter()返回满足函数条件的新数组,原数组保持不变

var arr = new Array(1,2,3,12,35);
var a = arr.filter(function fn(item,index,array) {
    return (item>2);
});
console.log(a);//[3, 12, 35]
console.log(arr);//[1, 2, 3, 12, 35]

every()只有所有项全部满足函数条件,才会返回true,否则返回false,原数组不变

var arr = new Array(1,2,3,12,35);
var a = arr.every(function fn(item,index,array) {
    return (item>2);
});
console.log(a);//false
console.log(arr);//[1, 2, 3, 12, 35]

some()只要存在某一项满足函数条件,就会返回true,原数组不变

var arr = new Array(1,2,3,12,35);
var a = arr.some(function fn(item,index,array) {
    return (item>2);
});
console.log(a);//true
console.log(arr);//[1, 2, 3, 12, 35]

forEach()遍历数组中的每一项元素,对数组中的每一项执行传入的函数,没有返回值

var arr = new Array(1,2,3,12,35);
var a = arr.forEach(function fn(item,index,array) {
    //自定义执行某些操作
});

map() 返回新数组,该新数组中的每一项都是对应于原数组中的每一项,并且值为原数组中的每一项运行执行函数的返回结果,原数组不变

var arr = new Array(1,2,3,12,35);
var a = arr.map(function fn(item,index,array) {
    return (item*3);
});
console.log(a);// [3, 6, 9, 36, 105]
console.log(arr);//[1, 2, 3, 12, 35]

相关文章

  • 07-30(数组)

    创建数组(两种方式) 1.使用Array构造函数 var arr = new Array(); 2.使用字面量方...

  • 07-30

    早安! 昨天加班研究了一天丰润达的信息,发现其主要的客户群体在欧洲各国,且这些国家不能通过海关数据查询到相关的信息...

  • 07-30

    如果用一张图来表达自己的心情,莫过于以下了。 朱光潜说光美感教育是使人在丰富华严的大千世界中,随处吸收支持生命和推...

  • 07-30

    【2019】210-11/365 1、规矩的立在于自己,而不是娃 与其天天问“洗好了没?走吧?”不如直接把水勺放回...

  • NEST—在智能的概念中追求实质【转载】

    BC网 发布于 8个月前 (07-30) 分类:智能家居/智能硬件 在连续入手了幻腾、Pivot Power Ge...

  • 20210812《一往无前》

    缘起 2021-07-29京东阅读限免,07-30看了1个番茄钟,16-41/436,全书计划17个。 中信出版集...

  • 我看到的最好的《哪吒之魔童降世》评论

    《哪吒》10亿票房背后:影片没那么好,中国人在被诱导消费 07-30 20:49 文 | 小象冒冒 截止7月30...

  • 07-30基金记录

    今天大盘继续震荡,时而红时而绿,市场量能有所放大,但整体来看还是偏小。 大部分板块表现不佳,医疗、消费、农业表现不...

  • 大佬都是这样跑步的

    84岁的巴菲特每天跑步1小时,小扎半年跑了584公里,大佬都是这样跑步的 搜狐媒体平台 07-30 18:01 2...

  • 07-30【今日话题】无

    【轻松周末】今日不指定话题。[偷笑] 周末啦,我们暂时忘掉“学习”、“成长”,适当留白,玩起来吧。当然,只要你愿意...

网友评论

      本文标题:07-30(数组)

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