JS算法 数组-对象
数组排序:
(1).冒泡排序
冒泡排序的原理:
就是通过两层循环把数组中两两相邻的元素进行比较,是的大的元素放到后边,元素交换位置,从而一步步的交换元素的位置,使得最大的元素放到数组的末尾,这样内部的循环就进行了一轮,再根据外部的循环依次再把次大一点的元素放到数组的末尾,从而实现数组的逐步排序
var arr = [1,2,3,4,5,8,9,6,5]
for( var i = 0; i< arr.length-1;i++){
for( var j = 0; j< arr.length - i - 1;j++){
if(arr [ j ] > arr [ j+1 ]){
t = arr [ j ]
arr [ j ] = arr [ j+1 ]
arr [ j+1 ] = t
} } }
(2).内置对象方法
sort默认排序是按照字符来排序的,也就是ASCII码排序的,如果想要改变默认的排序方式,就要给他加一个自定义排序规则
arr.sort( ( a,b )=>{
return a-b
} )
(3).选择排序
选择排序原理:
就是选择出数组中最大或者是最小的数放到最前面,然后在一次循环,选择次一级最大或者最小的数,从而得到想要的排序数组。
for( var i = 0; i < arr.length-1 ; i++ ){
for( var j = i+1; j<arr.length;j++){
if( arr[i] > arr[ j ] ){
var t = arr[ i ]
arr[ i ] = arr[ j ]
arr[ j ] = t
}}}
数组去重
(1)indexOf / lastindexOf
var arr = [0,2,1,7,90,56,100,1,7,56,2,90,101,99];
var arr1 = [ ]
for( var i = 0; i < arr.length;i++){
  if( arr1.indexOf(arr[ i ] == -1) ){
    arr1.push(  arr[ i ]  )
}}
(2)设置标识符
for( var i = 0; i< arr.length; i++ ){
  var flag = true;
    for( var j = i+1;j < arr.length; j++){
      if( arr[ i ] == arr[ j ]){
      flag = false;
      continue;
}}
    if(flag){
    arr1.push( arr [ i ] )
}}
(3)利用对象属性
var obj = {}
 for( var i = 0; i < arr.length ; i++ ){
  if( ! obj [ arr[ i ] ]){
    arr1.push(arr [ i ] );
    obj [ arr [ i ]] = true;
}}
(4)ES6  set方法
Set为ES6新增的一个对象,允许存储任何类型(原始值或引用值)的唯一值
 console.log(new Set(arr))
(5) 使用双重for循环,再利用数组的splice方法去重(ES5常用)
for ( var i = 0; i < arr.length ; i++ ){
  for( var j = i+1; j < arr.length ; j++ ){
    if ( arr[ i ] === arr[ j ]){
      arr.splice( j , 1);
      j - -;
}}}
数组深拷贝
var arr = [ 1,2,5,3,4 ]
var arrNew = [ ]
(1)for循环
arr.forEach(item => {
  arrNew.push(item)
})
 (2)扩展运算符  rest
  arrNew = [ ...arr ]
(3)concat    //方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
arrNew = arr.concat
(4)slice   //
arrNew = arr.splice(0)
(5)JSON 
arrNew = JSON.parse(JSON.stringify(arr))
对象深拷贝
var obj = { "a":1,"b":2,"c":3 }
var objNew = { }
(1)Object.assign
  Object.assign(objNew,obj)
(2)rest  //扩展运算符
  objNew = { ... obj }
(3)for in 
for( ker in obj ){
  objNew[ key ] = obj [ key ]
}
(4)JSON
objNew = JSON.parse(JSON.stringify( obj ))
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号