[前端学习]js语法部分学习笔记,第四天

JS内置数组对象操作

  • 数组名.concat()连接两个或更多的数组
  • 数组名.valueOf() 返回数组本身的值,这个一般不用,浏览器会默认调用
  • 数组名.toString() 把数组中的所有值转为字符串,并用逗号连接
  • 数组名.join() 也是把数组拼接为字符传,用实参传入的字符来连接值,不写默认为逗号
  • Array.isArray(数组名) 检测传入值是否是数组,ES5新增方法,老版浏览器不支持
  • 数组名.unShift(值) 从数组开头添加值,添加多个值用逗号隔开。返回值是添加过后的数组的长度
  • 数组名.push(值) 从数组结尾添加值,添加多个值用逗号隔开。返回值是添加过后的数组的长度
  • 数组名.shift() 从数组开头删除一个值。返回值是被删除的值
  • 数组名.pop() 从数组后面删除一个值。返回值是被删除的值
  • 数组名.reverse() 把数组里面值的顺序翻转
  • 数组名.slice(开始位置,结束位置[不包括结束位置的值]) 把数组里的值根据参数截取出来,并放入一个新的数组
  • 数组名.splice(开始位置,删除个数,插入值) 从参数开始的位置删除规定个数的值,如果写插入就是在删除值的位置插入,这个是对原数组操作。
  • 更多内置方法,找手册查阅

找到数组中某个值出现的所有位置

  • 数组名.index(值,查找位置) 这个方法可以查找某个值在数组第一次出现的位置,并返回索引号。查找位置参数值从索引值几开始找,如果找不到会返回-1。
  • 数组名.lastIndex(值,查找位置) 这个方法与上面的顺序相反,是反方向来找。
  • 通过index()这个方法配合循环还可以找到某个值所有出现的位置。这里使用do while循环,因为必须要找了才知道数组中有没有,所以必须得执行一次
    //假设有一个数组
    var arr = [x,x,x,x,x,x,x,x,x,x];
    //设置查找位置,因为每找到一次这个值后,就不用再找它了,所以要跳过它,就是位置+1,从它的后面一位开始找,又因为初始查找位置肯定是0
    var index = -1;
    var newArr = [];
    do {
    newArr.push(arr.index(值,index+1)) ; //把所有出现的位置赋值给新数组,再计算长度,还可以知道出现了多少次
    } while( index != -1) //如果返回值为-1就说明找不到,结束循环
  • 这样通过循环后,它会找到该值,并返回所有出现的位置。

统计数组中每个元素出现的次数

  • 要统计每个元素出现的次,首先肯定是用对象来存放,因为键值对才能清晰的展示
    var arr = [x,x,x,x,x,x,x,x,x,x];
    //首先需要一个空的对象来装
    var obj = {};
    for (var i=0; i
    //创建一个临时变量,存在数组的值,也作为对象的键
    var temp = arr[i];
    //如果循环到的当前值在对象中存在,说明这个值已经出现过一次,则给对象的对应属性的值+1。如果不存在就说明第一次出现,创建一个与当前值同名的对象属性,并为其赋值为1
    if(obj[temp]) {
    obj[temp] = obj[temp] + 1;
    } else {
    obj[temp] = 1;
    }
    }
    console.log(obj);

使用递归进行数组快排

/*使用递归快排的原理是把数组中的第一个值取出来作为标杆,然后遍历数组并让它来比较,比它小的放到一个左边数组,比它大的放到一个右边数组
然后左边和右边的数组分别使用同样的方法(递归实现)来进行比较,一直比较到最后,把标杆和左右数组连接起来就是排序好的数组了。*/
var arr = [30,10,29,58,24,45,38,69,73,8];
function arrSort(arr) {
//设置一个递归结束的条件,防止无限递归
//当递归到最后,左右数组都没有值了,说明原数组只剩一个值,直接连接就行了
if(arr.length == 0) {
return [];
}
//创建存放标杆值的临时变量和左右两个数组
var temp = arr[0];
var left = [];
var right = [];
for(var i=1; i
//如果当前值比标杆值大放入右边数组,反之把标杆值放入左数组
if( temp < arr[i] ) {
right.push( arr[i] );
} else {
left.push( arr[i] );
}
}
/*排序过程:在递归过程中,会先执行arrSort(left)并多次执行比较左右分组,然后又再次递归,直到里面的左右分组没有值,
就返回空值,然后根据分组顺序左+temp+右来连接,这样的结果顺序一定是正确的
然后再执行arrSort(right),执行过程与上面相同,最终返回正确顺序的结果。
最后连接最初的temp,就完成了快排*/
var newArr = arrSort(left).concat(temp, arrSort(right));
return newArr;
}
var arr1 = arrSort(arr);
console.log(arr1);

你可能感兴趣的:([前端学习]js语法部分学习笔记,第四天)