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); //false // 任何两个数组都不相等
var arr = [6];
var arr2 = new Array(6);
console.log(arr); //表示有一个数组成员的值是6
console.log(arr2); //表示6个数组成员,每个成员的值是undefined
console.log(arr.length); //1
console.log(arr2.length); //6
//当只有一个数据且是数值时,字面量会在数组中保存这个数值;构造函数会将这个数值作为长度,多个数值时表示数组成员
二、数组的操作方法
1.push:在数组的最后新增一个或多个成员; arr.push(3,4,5,6,7,8,9) ; 返回值:数组的长度
2.unshift:在数组的开头新增一个或多个成员;arr.unshift(3,4,5,6,7,8,9) ; 返回值:数组的长度
3. pop:删除数组的最后一个数组成员;arr.pop( );返回值:被删除的数组成员
4.shift:删除数组的第一个数组成员; arr.shift( );返回值:被删除的数组成员
6.slice: 截取数组成员;slice(n,m):从索引n,截取到索引m的前一个;返回值:截取成员的数组
arr.slice(2);从下标2开始截取到最后
7.sort:将数组按要求排序;返回值:排序后的数组
arr.sort(function(a,b){
return a-b //按升序排序
return b-a //按降序排序
})
8.concat:将两个数组合并拼接;返回值:合并的新数组
arr.concat([5,6,7,8])
9.join:以指定内容作为连接符将数组转为字符串;返回值:字符串
arr.join( ):默认连接符为”,“;
注:Es5新增的数组方法( indexOf,forEach,map,filter,some,every,reduce,reduceRight)
特点:不改变原数组
三、数组的排序
var arr = [5,2,6,1,4,9]
//冒泡排序
//1.确定循环比较几轮 ——————arr.length - 1
for(var i = 0;i < arr.length-1;i++){
//2.开始轮流比较 ——————每轮都比较出最大值,下一轮少比较一个,arr.length-1-i
for(var j = 0;j < arr.length -1 -i;j++){
//3.进行位置交换——————————将较大值放在较小值后面
if(arr[j] > arr[j+1]){
var ls = arr[j];
arr[j] = arr[j+1];
arr[j+1] = ls;
}
}
}
console.log(arr) //选择排序
//1.确定循环比较几轮 ——————arr.length -1
for(var i = 0;i < arr.length -1;i++){
//2.假设第一个数为最小值,记录数值和索引
var min = arr[i];
var minIndex = i;
//3.拿第一个数依次与后面每个数比较 ——————每轮都比较出最小值,将最小值放在第一个位置
//下一轮最小值不用比较,每轮比较次数也相应减小——————arr.length
//每轮的第二个数是下一轮的第一个数,这个数不用和自身比较————i+1
for(var j = i+1;j < arr.length;j++){
if(min > arr[j]){
//记录较小值和索引
min = arr[j];
minIndex = j;
}
}
//4.交换位置
//先将较大值放在较小值位置上
arr[minIndex] = arr[i];
//再将最小值放在每轮第一个位置上
arr[i] = min;
}
console.log(arr)
四、数组的应用
// 1.定义一个30项的数组,数组的每一项要求是1-10的随机数,每间隔5个数字,求出前五个数的平均值
// 定义一个30项的数组
var arr = [];
for(var i=0;i<30;i++){
arr.push(random(1,10))
}
console.log(arr)
// 每间隔5个数字,
// 0~5
// 5~10
// 10~15
for(var i=0;i<arr.length;i+=5){
var a = arr.slice(i,i+5);
var num = avg(a);
console.log(num);
} function avg(myarr){
var sum = 0;
for(var i=0;i<myarr.length;i++){
sum += myarr[i];
}
return sum
}
//2.二维数组随机数
function Make(a,b){
var arr1 = new Array();
for(var i = 0;i < 5;i++){
var arr = new Array();
for(var j = 0;j < 5;j++){
arr[j] = Math.round(Math.random(a,b) * (b-a) + a)
}
arr1.push(arr)
}
return arr1
}
console.log(Make(3,8)) //3.编写函数map(arr)
function map(arr) {
var arr1 = [];
for(var i = 0;i < arr.length;i++){
arr1.push(parseFloat(arr[i] * 1.3).toFixed(1));
}
return arr1
}
var arr = [1,2,3,4,5];
console.log(map(arr)) //4.编写函数has(arr,60)
function has(arr,num){
for(var i = 0;i < arr.length;i++){
if(arr[i] === num){
return true
}
}
return false
}
var arr = [1,2,3,4,60]
console.log(has(arr,60)) //5.编写函数norepeat(arr)
function norepeat(arr) {
var arr1 = [];
for(var i = 0;i < arr.length;i++){
if(!has(arr1,arr[i])){
arr1.push(arr[i])
}
}
return arr1
}
var arr = [1,2,3,4,5,6,5,4,3,2,1]
console.log(norepeat(arr)) //6.编写add函数,要求插入一个数,按原来从小到大排序插入
function add(arr,num){
arr.push(num);
arr.sort(function(a,b){
return a-b
})
return arr
}
var arr = [1,2,3,4,6,7];
console.log(add(arr,5))
JavaScript基础——数组的更多相关文章
- JavaScript 基础数组循环和迭代的几种方法
JavaScript 数组循环和迭代 (之前一直没怎么注意数组循环,今天做一道题时,用到forEach循环发现它并没有按照我想象的样子执行,总结一下数组循环) 一.第一种方法就是for()循环 ...
- JavaScript基础-----数组(Array)
1.JavaScript 中创建数组的方法: (1).使用Array构造函数: var arr = new Array(); //创建一个空数组 var arr = new Array(5); //传 ...
- JavaScript基础数组的字面声名法(010)
1.两种方法的对比 数组在JavaScript中,就像大多数的其它语言 一样,是对象.我们可以使用JavaScript内置的数组构造函数Array()来创建数组.就象对象的字面声名法一样,数组也可以采 ...
- Javascript 基础--数组
一.一维数组 1.一维数组 var weights = [3,5,1,3.4,2,50]; var all_weight=0; var avg_weight=0; for(var i=0;i<w ...
- JavaScript基础数组_布尔值_逻辑运算等(2)
day51 参考:https://www.cnblogs.com/liwenzhou/p/8004649.html 布尔值(Boolean) 区别于Python,true和false都是小写. var ...
- JavaScript基础------数组
数组1.数组的每个元素都可以保存任意类型数据2.数组长度可以随之调整创建数组的2种方式 1.使用Array构造函数 语法 new Array() 小括号()说明: (1)预先知道数组要保存的项目的数量 ...
- JavaScript基础插曲—元素样式,正则表达式,全局模式,提取数组
JavaScript基础学习 学习js的基础很重要,可以让自己有更多的技能.我相信这个以后就会用到. Eg:点击选择框,在div中显示出选择的数量 window.onload = function() ...
- JavaScript 基础回顾——数组
JavaScript是无类型语言,数组元素可以具有任意的数据类型,同一个数组的不同元素可以具有不同类型.数组的元素设置可以包含其他数组,便于模拟创建多维数组. 1.创建数组 在JavaScript中, ...
- javascript基础知识-数组
1.javascript创建数组时无需声明数组大小或者在数组大小变化时重新分配 2.javascript数组是无类型的 3.数组元素不一定要连续 4.针对稀疏数组,length比所有元素的索引都要大 ...
随机推荐
- c++ 通过sizeof运算符看内存对齐
一.基础数据类型 基础数据类型的sizeof,包括char.short,int,long,float,double 注意:实际数值有所偏差,与系统相关 二.数组及字符串 包括字符数组.字符指针.字符串 ...
- linux net通信 基于密钥
配置SSHD服务 SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理 Linux 系统的首选方式.在此之前,一般使用 FTP 或 Telnet 来进行远程登录 ...
- PAT(B) 1040 有几个PAT(Java)
题目链接:1040 有几个PAT (25 point(s)) 题目描述 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 ...
- ARM中断深入分析几点
ARM中断深入分析几点 1.程序发生中断后,是如何跳转到中断程序里面的? 2.执行完中断后,如何返回到原来被打断的地方接着执行呢? 3.ARM处理器的流水线结构对中断返回地址的计算有什么影响? 4.A ...
- 『Go基础』第7节 变量
1. 什么是变量? 我们应该怎么去理解变量? 在这里我要举一个例子: 大家应该都知道王者荣耀这个游戏. 当我们在玩王者荣耀的时候, 我们操控的英雄的血量是不断变化的, 这个血量是存在内存中的. 那么这 ...
- tkinter学习笔记_04
8.勾选项 checkbutton import tkinter as tk root = tk.Tk() root.title("xxx") root.geometry('200 ...
- [洛谷P3227][HNOI2013]切糕
题目大意:有一个$n\times m$的切糕,每一个位置的高度可以在$[1,k]$之间,每个高度有一个代价,要求四联通的两个格子之间高度最多相差$D$,问可行的最小代价.$n,m,k,D\leqsla ...
- 【洛谷 P2597】 [ZJOI2012]灾难(LCA)
题目链接 考虑建一棵树,使一个生物灭绝时他的子树都会灭绝,显然这样答案就是以每个点为根的子树大小-1. 为什么原图不是一棵树,因为一个生物可能会以多个生物为食,所以按拓扑序来建树,把每个遍历到的点的父 ...
- C# Attribute 名称和使用的问题
如果定义Attribute时, 名字是以Attribute结尾的, 在使用的时候, 就可以省略Attribute, 直接写前面的名字, 但是这样真的好吗? 自以为帮程序员省了一个单词, 然而 真理不再 ...
- ORACLE主键ID的生成
转自:https://blog.csdn.net/yh_zeng2/article/details/83477880 一般常用的方法有两种,使用Sequence和使用SYS_GUID(); 方法一 ...