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 ;
}
原文:https://www.cnblogs.com/wangyuyang1016/p/11055272.html