美文网首页
JS算法题总结

JS算法题总结

作者: icaojinyu | 来源:发表于2019-10-15 18:36 被阅读0次

1. 对象深克隆

function deepClone(o) {
  if (o === undefined || o === null || typeof o === "number" || typeof o === "string" || typeof o === "boolean") {
    return o
  } else if (Array.isArray(o)) {
    const arr = []
    for (let item of o) {
      // 递归
      arr.push(deepClone(item))
    }
    return arr
  } else if (typeof o === "object") {
    const obj = {}
    for (let key in o) {
      if (o.hasOwnProperty(key)) {
        obj[key] = deepClone(o[key])
      }
    }
    return obj
  }
}

var p1 = {
  name: "xiaoming",
  age: 17,
  hobby: ["code", "girl"]
}

var p2 = deepClone(p1)
console.log(p2)

console.log(p1.hobby === p2.hobby) // false

2. 数组去重

  • 方法一:
var arr = [1, 1, 1, 2, 2, 2, 3, 3, 3]
var arr2 = [...new Set(arr)]
console.log(arr2) // [ 1, 2, 3 ]
  • 方法二:
var arr = [1, 1, 1, 2, 2, 2, 3, 3, 3]

function unique(arr) {
  var res = []
  for (let item of arr) {
    if (!res.includes(item)) {
      res.push(item)
    }
  }
  return res
}

console.log(unique(arr)) // [ 1, 2, 3 ]

3. 数组扁平化

  • 方法一:
// es6
   arr = arr.flat(Infinity)
  • 方法二:
// 数组扁平化
function flatten(arr){
  var res = []
  for(let item of arr){
    if(Array.isArray(item)){
      res = res.concat(flatten(item))
    }else {
      res.push(item)
    }
  }
  return res
}

4. 冒泡排序

// 冒泡排序
    function bubbleSort(arr) {
      for (let i = 0; i < arr.length - 1; i++) {
        for (let j = 0; j < arr.length - 1 - i; j++) {
          if (arr[j] > arr[j + 1]) {
            [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
          }
        }
      }
      return arr
    }

相关文章

  • JS算法题总结

    1. 对象深克隆 2. 数组去重 方法一: 方法二: 3. 数组扁平化 方法一: 方法二: 4. 冒泡排序

  • js算法题

    1、js 正则表达式题 var s1 = "get-element-by-id"; 给定这样一个连字符串,...

  • js 算法题

    面试发现自己的算法知识有不足,因此参考了多篇文章学习总结。 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换...

  • js算法题

    1.数组去重 方法一:利用嵌套for循环和splice去重 方法二:利用indexOf去重 方法三:利用Set集合...

  • 前端校招准备系列--js实现链表的基本操作

    自己总结了一下链表的基本操作的实现,文末还有几道简单的算法题可供练习! 前端校招准备系列--使用js实现链表的操作...

  • 【算法】打印算法题总结

    前言 本文记录了我对打印算法题的总结。先说说什么事打印算法题,就是按照一定的规则打印二维矩阵。例如:旋转正方形矩阵...

  • 字节跳动面试必问:海量算法高频面试题精编解析(深度好文,值得收藏

    常考面试算法题类型总结 结合2019春招和秋招真题,以下几类算法题最常考,汇总了一下: 一、暴力枚举 好多鱼! D...

  • 2019-03-31

    本周学习简单总结 请一定在今天完成LeetCode全部算法题目 Leetcode算法题: 树: 递归:https:...

  • 算法题分类总结

    迭代查找类型 1. 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序...

  • 算法刷题总结

    参考资料:[1]. 二叉搜索树转化为排序的二叉链表(《剑指offer》27题)[2]. 快速排序的基本思想[3]....

网友评论

      本文标题:JS算法题总结

      本文链接:https://www.haomeiwen.com/subject/endjmctx.html