JavaScript初探(三)JavaScript字段定义创建链表
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
复制
将数组元素字段更新为对象。 数组元素可以是对象:由于链表的特性,数组是一种特殊类型的对象。 因此,链表中可以存储不同类型的变量,包括数字、字符串、函数、函数……而且,还可以在链表中存储另一个字段字段属性长度属性
var arr = ["Huawei","China","Mirror"];
arr.length;
// 结果:返回 3
复制
由于arr索引从0开始,而长度估计从1开始,因此length-1 ===是数组最后一个元素的下标索引。
var arr[arr.length - 1] ;
// 结果返回 Mirror
复制
迭代字段
var arr = ["Huawei","China","Mirror"];
var text = "";
for(i = 0 ; i < arr.length-1 ; i ++){
text += "- " + arr[i] + "
";
}
复制
Array.foreach()
var arr = ["Huawei","China","Mirror"];
var text ;
text = "";
arr.forEach(myArr);
text += "
";
function myArr(value){
text += "" + value + " ";
}
复制
添加元素:push()
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
复制
对象和字段的区别:识别数组变量链表方法toString()数组输出
var arr = ["Huawei","China","Mirror"];
document.getElimentById("demo").innerHTML = arr.toString();
// 结果:Huawei,China,Mirror
复制
join() 数组输出
var arr = ["Huawei","China","Mirror"];
document.getElimentById("demo").innerHTML = arr.join("&");
// 结果:Huawei&China&Mirror
复制
Popping()(删除元素)
var arr = ["Huawei","China","Mirror"];
arr.pop(); //删除最后一个元素 Mirror
复制
pop():返回删除的数字
Pushing()(添加元素)
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
复制
不建议使用删除操作符。 您可以使用 pop() 或 shift() 代替。 原因:后者的链表方法会手动擦除字段索引,而delete会保留索引,造成空洞。
拼接字段 splice()
var arr = ["Huawei","China","Mirror"];
arr.splice(2,0,"Refueling","Hello");
复制
第一个参数:定义在何处添加新元素 第二个参数:定义应删除多少个元素 其余参数:定义要添加的新元素
var arr = ["Huawei","China","Mirror"];
arr.splice(0,1); // 删除 arr 数组中的第一个元素
复制
第一个参数:定义添加新元素 第二个参数:定义删除多个元素 其余参数:忽略,不添加新元素
splice() 将返回删除的元素javascript参数数组,并且原始字段的内容将被更改。
合并字段 concat()
var str1 = ["Huawei","Refueling"];
var str2 = ["China","Refueling"];
var myStr = str1.concat(str2) ; // 连接 str1 和 str2
复制
Array1.concat(Array2,……)
同样,concat() 也可以与值组合 array1.concat([value,...])
剪切字段切片()
var arr = ["Huawei","China","Refueling","Hello","World"];
var array = arr.slice(1);
var array = arr.slice(1,3);
复制
第一个元素:裁剪的起始位置。 第二个元素:裁剪的结束位置。 如果省略第二个元素,则会从链表的起始位置截取到最后一个元素。
JavaScript 字段排序 sort()
var arr = ["Huawei","China","Refueling","Hello","World"];
arr.sort();
// 结果:China,Hello,Huawei,Refueling,World
复制
反转字段reverse()
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()函数比较两个值时,值被发送到比较函数并根据返回值进行排序。
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 ;
}
复制
按随机顺序排序
var points = [40,100,1,5,25,10] ;
points.sort(function(a,b){return 0.5 - Math.random()});
复制
原理是:0.5除以随机数
求最大值 Math.max()
function myArrayMax(arr) {
return Math.max.apply(null,arr);
}
复制
Math.max.apply([1,2,3]) === Math.max(1,2,3)
数学.min()
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});
复制
通过比较函数比较属性中的属性值内容
JavaScript 数组迭代方法 Array.forEach()
var txt = "" ;
var number = [45,4,9,16,25] ;
numbers.forEach(myFunction) ;
function myFunction (value , index , array) {
txt += value + "
" ;
}
复制
上述代码的作用:对数组中的每个值进行传递并调用函数
数组.map()
var number1 = [45,4,9,16,25] ;
var number2 = number1.map(myFunction) ;
function myFunction(value,index,array){
return value * 2 ; // 数组中的元素 * 2 并返回
}
复制
数组.filter()
var number = [45,4,9,16,25] ;
var over18 = number.filter(myFunction) ;
function myFunction(value , index , array){
return value > 18 ; // 返回大于18的数组元素并组成一个新数组
}
复制
数组.reduce()
var number = [45,4,9,16,25] ;
var sum = number.reduce(myFunction) ;
function myFunction(total , value , index , array){
return total + value ;
}
复制
reduce():方法只能接收一个初始值
Array.reduceRight()Array.every()
var number = [45,4,9,16,25] ;
var allOver18 = number.every(myFunction) ;
function myFunction(value , index , array) {
return value > 18 ;
}
复制
Array.some()
var number = [45,4,9,16,25] ;
var someOver18 = number.some(myFunction) ;
function myFunction(value , index , array) {
return value > 18 ;
}
复制
Array.indexOf()
var number = [45,4,9,16,25] ;
var a = number.indexOf(45);
复制
array.indexOf(item,start) item:必填,要检索的项目 start:可选javascript参数数组,检索的起点
如果未找到该项目,则返回 -1。 如果搜索的内容出现多次,则返回第一次出现的内容。
Array.lasIndexOf()Array.find()
var number = [45,4,9,16,25] ;
var first = number.find(myFunction) ;
function myFunction(value , index , array) {
return value > 18 ;
}
复制
Array.findIndex()
var number = [45,4,9,16,25] ;
var first = number.findIndex(myFunction) ;
function myFunction(value , index , array){
return value > 18 ;
}
复制