一些前端基础算法题

130 阅读1分钟

算法可视化网站

visualgo.net/en

冒泡排序--方法1

const arr = [9, 26, 51, 2, 55, 3, 567, 12];
//i代表比较的趟数
for (let i = 1; i < arr.length; i++) {
  //两两比较
  for (let j = 0; j < arr.length - 1; j++) {
    let temp = arr[j];
    if (arr[j + 1] < arr[j]) {
      arr[j] = arr[j + 1];
      arr[j + 1] = temp;
    }
  }
}
console.log(arr);//[2, 3, 9, 12, 26, 51, 55, 567]

手写JS深拷贝--方法1

var obj = {
  name: "messi",
  age: 34,
  team: { LaLiga: "Barcelona", Ligue: "paris" },
  friend: ["neymar", "suarez", { Argentina: "Di María" }]
};

function deepClone(obj = {}) {
  if (typeof obj !== "object" || obj == null) {
    return obj;
  }
  let result;

  if (obj instanceof Array) {
    result = [];
  } else {
    result = {};
  }

  for (let k in obj) {
    if (obj.hasOwnProperty(k)) {
      result[k] = deepClone(obj[k]);
    }
  }
  return result;
}

const newObj = deepClone(obj);
newObj.team.LaLiga = "gogogo";
console.log(newObj, obj);

1634871987(1).jpg