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 ))
posted @   ..Shmily  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示