挽袖吟

文章 评论 浏览 28

挽袖吟 2022-05-04 13:57:30

@alanchanzm 答了很多,而且很有帮助,但是离题了。

问题是继承的差异。

class Super {}
class Sub extends Super {}

const sub = new Sub();

Sub.__proto__ === Super;

子类可以直接通过 proto 寻址到父类。

function Super() {}
function Sub() {}

Sub.prototype = new Super();
Sub.prototype.constructor = Sub;

var sub = new Sub();

Sub.__proto__ === Function.prototype;

而通过 ES5 的方式,Sub.proto === Function.prototype

@XueSeason 我好像记得es6 class Sub extends Super {} 在babel解析中是这样的

function Super(){}
let Sub = Object.create(Super)

Sub.__proto__ === Super;//true

第 7 题:ES5/ES6 的继承除了写法以外还有什么区别?

挽袖吟 2022-05-04 13:56:27
// ---------------------------------以相邻数值为一组----------------------------------
let random = (min, max) => {
  return Math.floor(Math.random() * (max - min)) + min
}
// 随机生成10条数组
let data =  Array.from({length: 10}).map(x => random(1, 100));
// 数组去重
data = [...new Set([...data])];
// 数组排序
data.sort((a, b)=> a - b);

let setArray1 = (data) => {
  let newArr = [data[0]];
  let result = [];
  for (let i = 1; i < data.length; i++) {
    // 当前数值等于前一个数值+1
    if (data[i] == data[i - 1] + 1) {
      newArr.push(data[i]);
    } else {
      result.push(newArr)
      newArr = [data[i]];
    }
    // 最后一条也要加进去
    if(i == data.length -1) {
      result.push(newArr)
    }
  }
  return result
}

let setArray2 = (data) => {
  let newArr = [data[0]];
  let result = [];
  for (let i = 1; i < data.length; i++) {
    // 判断数组中有没有当前数值-1
    if(newArr.includes(data[i] - 1)){
      newArr.push(data[i]);
    } else {
      result.push(newArr)
      newArr = [data[i]];
    }
    // 最后一条也要加进去
    if(i == data.length - 1) {
      result.push(newArr)
    }
  }
  return result
}

console.log(data);  // [41, 45, 47, 48, 55, 65, 75, 76, 85, 98]
console.log(setArray1(data)); // [[41], [45], [47, 48], [55], [65], [75, 76], [85], [98]]
console.log(setArray2(data)); // [[41], [45], [47, 48], [55], [65], [75, 76], [85], [98]]


// ---------------------------------以[1-9]、[10-19]、[20-29] ... 为一组----------------------------------

let setArray3 = (data) =>{
  let obj = {}
  let result = []
  for (let i = 0; i < data.length; i++) {
    let num = Math.floor(data[i]/10);
    if(obj[num]) {
      obj[num].push(data[i])
    } else {
      obj[num] = [data[i]]
    }
  }
  for (const key in obj) {
    result.push(obj[key])
  }
  return result
}

console.log(setArray3(data)); // [[41, 45, 47, 48], [55], [65], [75, 76], [85], [98]]

第 67 题:随机生成一个长度为 10 的整数类型的数组

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文