知识点04"/>
js知识点04
1,数组: JS中数组的定义(1).通过new关键字+Array生成数组(2).通过字面量"[]"快速定义数组
2,数组中动态添加数据(1). arr[index] = val 通过数组名[下标]赋值的形式直接添加数据。注意如果下标在数组中之前存在,此时执行的是对数组中的元素进行修改。如果想要添加,此方式只能在数组的末尾添加元素。(2). arr.push(val) 调用数组的方法push,向数组的最后一个位置添加元素(3). arr.unshift(val) 调用数组的unshift方法在数组的开头位置动态添加元素
3,删除数组中的元素(1).arr.pop()--直接删除数组中最后一个位置的元素,移除元素时会将移除的元素返回给外界(2).arr.shift()--直接删除数组中开头位置的元素,移除元素时会将移除的元素返回给外界(3).arr.splice(index, num, val1, val2,....)--index代表开始删除的元素对应的下标,num代表连续删除的元素个数,val1, val2,...代表需要添加的元素
4,数组的切片:从数组中指定下标开始到另一个下标结束,连续提取若干个子级元素,以新数组形式返回 arr.slice(start, end)--从下标为statrt的位置切到下标为end-1的位置
5,JS中判断数据的类型 typeof(val)获取val对应的数据类型,返回值是一个对应类型字符串;instanceof执行类型推断。但是注意该方式只对通过new创建的数据类型有效,如果通过字面量设置的类型,instanceof是无法进行数据推断。
6,有一个数组含有n个元素,n个元素由字符串和数值两种类型组成,但是排布是随机排布的。实现一种算法将字符串和数值进行分类提取,放置在不同的数组中。 arr1.length--用来返回数组中的元素个数
7,查看某一个元素是否在数组中,经常用来完成数组去重 arr.indexOf(val)--判断val在数组中是否存在,如果不存在则输出-1,如果存在则返回当前元素在数组中第一次被查到的对应下标。
8,有一个数组存储了若干个数据,但是每一个数据在数组中有可能存在多个,写一个算法实现对数组元素的去重操作
9,数组拼接:若干个数组最终合并成一个完整的数组; arr1.concat(arr2, arr3, ...arrn)--将数组arr2,arr3,...arrn依次和数组arr1进行拼接,最终返回拼接之后的新数组
10,将数组中的元素按照特定格式拼接成字符串(数组转换成字符串) arr.join(sign)--将数组中的元素按照sign方式进行拼接最终转换成字符串。
11,冒泡排序分为若干趟,每一趟又分为若干次,每一趟比较会得到一个有序数字;外层循环控制比较的趟数,比较的趟数中n-1的减1操作可以省略,只不过减1之后会造成程序多一趟执行,对效率有影响,但是不会造成错误。
12,冒泡排序实例:
for(var i = 0; i < n-1; i++){
内部循环控制比较的次数,注意j中的数据代表当前第j次比较对应的数据下标。注意内层循环中n-i-1的减1操作无法省略,否则会造成数组的越界
for(var j = 0; j < n - i - 1; j++){
if(arr1[j] > arr1[j+1]){
var temp = arr1[j];
arr1[j] = arr1[j+1];
arr1[j+1] = temp;
}
}
}
数组内置的冒泡排序
var arr2 = [1,2,14,2,3];
// sort注意如果不指定排序方案,此时默认是按照数组中字符串形式升序排序
arr2.sort(function(num1, num2){
// num1代表冒泡排序是相邻元素中靠前的元素, num2代表相邻元素中靠后的元素,当两者之间的差值>0时才能触发两个元素的数据交换过程。
return num2 - num1;
});
console.log(arr2);
13,JS生成随机值 Math.random()生成一个[0,1)区间的随机小数 如果想要生成一个[min,max]区间的随机整数此时需要按照下面的公式执行: Math.floor(Math.random()*(max-min+1)+min)
生成一个[10,30]区间的随机整数
console.log(Math.floor(Math.random()*(30-10+1)+10));
14,数组和冒泡综合实例
//求上面数组中的最大值和最小值
var arr1 = [].concat(arr);
arr1.sort(function(num1, num2){
return num1 - num2;
});
var min = arr1[0];
var max = arr1[arr1.length-1];
console.log(min, max);
//输出最大值和最小值的下标
for(var i = 0; i < arr.length; i++){
if(arr[i] == min){
console.log(`最小值下标为${i}`);
}else if(arr[i] == max){
console.log(`最大值下标为${i}`);
}
}
//有两个无序数组,无序数组的中元素个数随机,要求将两个数组中的元素分别进行升序排序并且将排序之后的数组合并,合并之后的数据仍然是升序.要求冒泡排序只能只用两次.
var arr2 = [2,5,3];
var arr3 = [1,5,3,4,2];
//首先冒泡排序
arr2.sort(function(num1, num2){
return num1 - num2;
});
arr3.sort(function(num1, num2){
return num1 - num2;
});
//将两个升序排序的数组进行合并
var i = 0, j = 0;
var newArr = [];
while(i < arr2.length && j < arr3.length){
if(arr2[i] < arr3[j]){
newArr.push(arr2[i]);
i++;
}else{
newArr.push(arr3[j]);
j++;
}
}
//将剩余部分贴片拼接到新数组中
if(i >= arr2.length){
newArr = newArr.concat(arr3.slice(j));
}else{
newArr = newArr.concat(arr2.slice(i));
}
console.log(newArr);
更多推荐
js知识点04
发布评论