var arr = ["Huawei","China","Mirror"];
同时JavaScript也支持 new Array 建立数组。可是建议使用上面的文本方式建立数组javascript
var name = arr[0]; // name = Huawei
ps:数组的索引是从 0 开始的html
var arr = ["Huawei","China","Mirror"]; document.getElementById("demo").innerHTML = arr ; // 结果输出: Huawei,China,Refueling
typeof arr_name 会返回 objectjava
JavaScript的数组其实是一种对象的表现,可是数组
数组最好仍是以数组方式来描述app
二者的区别:dom
数组元素能够是对象:函数
因为数组的特色,数组是特殊类型的对象测试
故此,能够在数组中存放不一样类型的变量spa
能够数字、字符串、函数、函数……code
并且,还能够在数组中存储另外一个数组
var arr = ["Huawei","China","Mirror"]; arr.length; // 结果:返回 3
因为arr索引是从零开始,而length数目计算是从1开始的
因此length-1 === 数组最后一个元素的下标索引
var arr[arr.length - 1] ; // 结果返回 Mirror
var arr = ["Huawei","China","Mirror"]; var text = "<ul>"; for(i = 0 ; i < arr.length-1 ; i ++){ text += "<li>" + arr[i] + "</li>"; }
var arr = ["Huawei","China","Mirror"]; var text ; text = "<ul>"; arr.forEach(myArr); text += "</ul>"; function myArr(value){ text += "<li>" + value + "</li>"; }
var arr = ["Huawei","China","Mirror"]; arr.push("Refueling");
arr[arr.length] = ("Refueling"); // 或者 arr[x] = ("Refueling");
var arr = []; arr[0] = "Huawei"; arr[1] = "China"; arr[2] = "Refueling"; var x = arr.length ; //返回 3 var y = arr[0]; //返回 Huawei
var arr = []; arr["A"] = "Huawei"; arr["B"] = "China"; arr["C"] = "Refueling"; var x = arr.length ; // 返回 0 var y = arr[0] ; //返回 undefined
在JavaScript中,数组 使用数字索引
在JavaScript中,对象使用命名索引
对象和数组的不一样应用
若是但愿元素名为字符串(文本),则使用对象
若是但愿元素名数字,则使用数组
避免 new Array()
没有必要使用内建数组构造器 new Array()
var arr = ["Huawei","China","Mirror"]; document.getElimentById("demo").innerHTML = arr.toString(); // 结果:Huawei,China,Mirror
var arr = ["Huawei","China","Mirror"]; document.getElimentById("demo").innerHTML = arr.join("&"); // 结果:Huawei&China&Mirror
var arr = ["Huawei","China","Mirror"]; arr.pop(); //删除最后一个元素 Mirror
pop():返回被删除的那个数
var arr = ["Huawei","China","Mirror"]; arr.push("Refueling"); // 添加 Refueling到数组中,并返回最新数组的长度
push():返回新数组的长度
var arr = ["Huawei","China","Mirror"]; arr.shift(); // 返回 Huawei
shift() 返回被移出(删除)的元素
var arr = ["Huawei","China","Mirror"]; arr.unshift("Refueling"); // 返回 新的数组长度 5
unshift():返回新的数组长度
var arr = ["Huawei","China","Mirror"]; delete arr[0]; //把 "Huawei" 改成 undefined
不建议使用delete运算符,可使用pop() 或 shift() 代替
缘由:后者的数组方法,会自动抹除数组索引,而delete则会保留索引并致使空洞
var arr = ["Huawei","China","Mirror"]; arr.splice(2,0,"Refueling","Hello");
第一个参数:定义添加新元素的位置
第二个参数:定义应删除多少元素
其他参数:定义要添加的新元素
var arr = ["Huawei","China","Mirror"]; arr.splice(0,1); // 删除 arr 数组中的第一个元素
第一个参数:定义新元素添加的元素
第二个参数:定义删除多个元素
其他参数: 被忽略,没有新元素添加
splice()会返回被删除的元素
而原数组的内容就会被修改
var str1 = ["Huawei","Refueling"]; var str2 = ["China","Refueling"]; var myStr = str1.concat(str2) ; // 链接 str1 和 str2
Array1.concat(Array2,……)
一样的,concat()也能够和数值合并
array1.concat([值,……])
var arr = ["Huawei","China","Refueling","Hello","World"]; var array = arr.slice(1); var array = arr.slice(1,3);
第一个元素:裁剪的开始位置
第二个元素:裁剪的结束位置
若第二个元素被省略,
则从开始的位置截取到数组的最后一个元素
var arr = ["Huawei","China","Refueling","Hello","World"]; arr.sort(); // 结果:China,Hello,Huawei,Refueling,World
var arr = ["Huawei","China","Refueling","Hello","World"]; arr.reverse()
var arr = ["Huawei","China","Refueling","Hello","World"]; arr.sort(); arr.reverse();
比较函数目的是定义另外一种排序顺序
比较函数应该返回一个负、零或正值,这取决于参数
function(a,b){return a-b}
当 sort() 函数比较两个值时,会将值发送到比较函数,并根据返回的值,对这些值进行排序。
实例:
当比较 40 和 100 时,sort() 方法会调用比较函数 function(40,100)
该函数计算 40 - 100 ,而后返回一个 负值
排序函数将40排序为比100更低的值
<div> <button onclick="myFunction1()">字母顺序</button> <button onclick="myFunction2()">数字顺序</button> <p id = "demo"></p> </div> <script> var points = [40,100,1,5,25,10] ; document.getElementById("demo").innerHTML = points ; function myFuntion1() { points.sort(); document.getElementById("demo").innerHTML = points ; } function myFuntion2() { points.sort(function(a,b){return a - b}) ; document.getElementById("demo").innerHTML = points ; } </script>
var points = [40,100,1,5,25,10] ; points.sort(function(a,b){return 0.5 - Math.random()});
原理就是:0.5减去一个随机数
function myArrayMax(arr) { return Math.max.apply(null,arr); }
Math.max.apply([1,2,3]) === Math.max(1,2,3)
function myArrayMin(arr) { return Math.min.apply([null,arr]); }
Math.min.apply([1,2,3]) === Math.min(1,2,3)
function myArrayMax(arr) { var len = arr.length ; var max = -Infinity ; //最小的负值 while (len --) { if (arr[len] > max) { max = arr[len] ; } } return max ; }
function myArrayMin(arr) { var len = arr.length ; var min = Infinity ; while (len --) { if (arr[len] < min) { min = arr[len]; } } return min ; }
var cars = [ {name:"HUAWEI",age:"good"}, {name:"MI",age:"where"}, {name:"Java",age:"No:1"} ];
即便对象拥有不一样数据类型的属性,sort()方法仍然能够对数组进行排序
解决方法就是利用比较函数对比属性值
cars.sort(function(a,b){return a.year - b.year});
经过比较函数,将属性中的属性值内容进行对比
var txt = "" ; var number = [45,4,9,16,25] ; numbers.forEach(myFunction) ; function myFunction (value , index , array) { txt += value + "<br>" ; }
上述代码的做用:数组中每一个值传递并调用函数
var number1 = [45,4,9,16,25] ; var number2 = number1.map(myFunction) ; function myFunction(value,index,array){ return value * 2 ; // 数组中的元素 * 2 并返回 }
var number = [45,4,9,16,25] ; var over18 = number.filter(myFunction) ; function myFunction(value , index , array){ return value > 18 ; // 返回大于18的数组元素并组成一个新数组 }
var number = [45,4,9,16,25] ; var sum = number.reduce(myFunction) ; function myFunction(total , value , index , array){ return total + value ; }
reduce():方法可以接收一个初始值
var number = [45,4,9,16,25] ; var allOver18 = number.every(myFunction) ; function myFunction(value , index , array) { return value > 18 ; }
var number = [45,4,9,16,25] ; var someOver18 = number.some(myFunction) ; function myFunction(value , index , array) { return value > 18 ; }
var number = [45,4,9,16,25] ; var a = number.indexOf(45);
array.indexOf(item,start)
item:必须,要检索的项目
start:可选,检索的起点
未找到项目,返回 -1
若是搜索的内容出现屡次,则返回第一个出现的位置
var number = [45,4,9,16,25] ; var first = number.find(myFunction) ; function myFunction(value , index , array) { return value > 18 ; }
var number = [45,4,9,16,25] ; var first = number.findIndex(myFunction) ; function myFunction(value , index , array){ return value > 18 ; }