Js中创建数组有两种方式:
一、使用Array构造函数:
①、var arr = new Array();// 创建一个空数组
②、var arr = new Array(20);// 创建一个长度为20的数组,每一项的值为undefind
③、var arr new Array("lili","daming");// 创建一个包含两个字符串的数组
二、使用数组字面量表示法:
①、var arr = [];//创建一个空数组
②、var arr = [20];//创建一个只包含一项的数组,长度为1
③、var arr2 = [“lili","daming"]//创建一个包含两个字符串的数组
数组的属性:
- length 属性:arr.length 数组的长度
数组的方法:
1、Array.isArray():用于确定传入的值是否是一个数组。Array.isArray(arr);
2、join() :将数组的每项连在一起组成一个字符串。只接受一个参数,即分隔符,默认为逗号分隔符。arr.join('-');==>lili-daming
3、push() :可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。arr.push('wangfang','xiaoming');
pop() :从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。arr.pop();
5、shift() :删除数组的第一项,并返回删除的项,该方法更改数组的长度。如果数组为空,则返回undefined。arr.shift();
unshift() :将参数添加到数组的开头,并返回数组的长度arr2.unshift('lala')==>3
小结:shift()和pop()方法正好对应,一个操作数组的开头,一个操作数组的结尾。
6、sort() :升序排列数组项,该方法会将每项值转换为字符串(调用toString()方法)进行比较再进行排序。
例子:
①、var arr3 =[“10","9","8","15"]; arr3.sort() ==>8,9,10,15
②、var arr3 =[10,9,8,15]; arr3.sort() ==>10,15,8,9
为了解决数值的排序问题:sort()方法可以接收一个比较函数作为参数。
//升序函数
function compare(value1,value2){
if(value1
return -1;
}else if(value1>value2){
return 1;
}else{
return 0;
}
}
//降序函数
function compare(value1,value2){
if(value1
return 1;
}else if(value1>value2){
return -1;
}else{
return 0;
}
}
var arr3 =[10,9,8,15]; arr3.sort() ==>8,9,10,15
7、reverse():反转数组项的顺序。arr.reverse()
8、concat() :用于合并两个或多个数组,此方法不会更改现有数组,而是创建了一个新数组。 arr1.concat(arr2); arr1.concat(arr2,arr3);
9、slice():返回原数组中 指定开始下标到结束下标的项组成新数组(前闭后开原则,不包括结束位置的项),并返回。
var str =[1,3,5,6,7,8,9];
alert(str.slice(1)); ==> 3,5,6,7,8,9
alert(str.slice(1,2)); ==> 3
10、splice():它有多种用法,可实现删除、插入和替换
删除:只需指定两个参数,要删除的第一项的位置和要删除的项数,并返回删除的数组。如果没有删除任何项,则返回一个空数组。
str2.splice(1,2) ==》3,5
str.splice(0) ==》1,3,5,6,7,8,9
str.splice(1) ==》3,5,6,7,8,9
插入:可以向指定位置插入任意数量的项,只需提供3个参数 11、indexOf():接受两个参数,要查找的项和(可选)表示查找起点位置的索引。从数组开头向后查找。
lastIndexOf():接受两个参数,要查找的项和(可选)表示查找起点位置的索引。从数组末尾向前查找。
返回要查找的项在数组中的位置,如果没找到的情况下返回-1.
12、forEach():对数组进行遍历循环,对数组中的每一项运行给定函数。这个函数没有返回值,参数为:数组的内容,对应数组索引,数组本身。
str.forEach(function(item,index,str){
alert(index+'-'+item)
});
13、map() :指‘映射’,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。str.map(function(item){...})
14、filter() :过滤功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组。
15、every():判断数组中每一项是否满足条件,只有所有项都满足条件,才会返回true.
str.every(function(item){
return item
}); ==>true
16、some(): 判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。
17、toString():返回一个字符串
18、Array.of(str):将字符串转换成数组
19、fill():用一个固定值填充一个数组从起始索引到终止索引内的全部元素。
20、find():返回数组中满足提供的测试函数的第一个元素的值。
冒泡排序:
思路:它重复地走访过要排序的数列(直到没有再需要交换),一次比较两个元素,如果它们的顺序错误就把它们交换过来。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
function bubbleSort(arr) {
for (let i = 0, len = arr.length - 1; i < len; i++) {
for (let j = 0; j < len - i; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp;
}
}
} return arr;
}
选择排序:
思路:选择排序的实现思路是从未排序序列中找到最小的元素,放到已排序序列的末尾,重复上述步骤,直到所有元素排序完毕。
举例:
例:5,4,7,2,9,1,6
第一趟排序 :1,4,7,2,9,5,6
第二趟排序: 1,2,7,4,9,5,6
第三趟排序: 1,2,4,7,9,5,6
第四趟排序: 1,2,4,5,9,7,6
······
排序代码实例
//选择排序
function selectSort(arr){
var len = arr.length;
var index;
for(var i=0;i<len-1;i++){
index=i;
for(var j=i+1;j<len;j++){
if(arr[index]>arr[j]){//寻找最小值
index=j;//保存最小值的索引
}
}
if(index!=i){
var temp =arr[i];
arr[i]=arr[index];
arr[index]=temp;
}
}
return arr;
}
var arr = [6,4,9,8,1,3,2]
console.log(selectSort(arr));