var arr = ["huawei","china","mirror"];
同时javascript也支持 new array 创建数组。但是建议使用上面的文本方式创建数组
var name = arr[0]; // name = huawei
ps:数组的索引是从 0 开始的
var arr = ["huawei","china","mirror"]; document.getelementbyid("demo").innerhtml = arr ; // 结果输出: huawei,china,refueling
typeof arr_name 会返回 object
javascript的数组实际上是一种对象的表现,但是
数组最好还是以数组方式来描述
两者的区别:
数组元素可以是对象:
由于数组的特点,数组是特殊类型的对象
故此,可以在数组中存放不同类型的变量
可以数字、字符串、函数、函数……
而且,还可以在数组中存储另一个数组
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中,对象使用命名索引
对象和数组的不同应用
如果希望元素名为字符串(文本),则使用对象
如果希望元素名数字,则使用数组
避免 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 ; }
如对本文有疑问, 点击进行留言回复!!
JavaScript 好题汇总分享(持续更新,看到好题就写)
XMLHttpRequest 2级 &&进度事件&&JSONP
使用递归原生实现拷贝&&最简单的方法实现深拷贝
网友评论