ws3

function Person(name) {
  this.name = name;
}

Person.prototype.print = function() {
  return this.name;
};

Person('abc');
const a = new Person('abc').print.call({});
console.log(a);

const fn = () => {
  this.x = 'z';
};

const b = {x: 'y'};
fn.call(b);
console.log(b);

2.垂直居中

function Person(name) {
  this.name = name;
}

Person.prototype.print = function() {
  return this.name;
};

Person('abc');
const a = new Person('abc').print.call({});
console.log(a);

const fn = () => {
  this.x = 'z';
};

const b = {x: 'y'};
fn.call(b);
console.log(b);
  1. 数组扁平化处理
flat 

[1,2,3,4,[5,6,7,[8,9]]]

[1,2,3,4,5,6,7,8,9]

function flatten(arr) {
    var result = []
    for (var i = 0; i < arr.length; i++) {
        console.log(arr[i])
        if (Array.isArray(arr[i])) {
            result = result.concat(flatten(arr[i])) // 如果是数组,则直接拼接到新数组
        } else {
            result.push(arr[i]) // 基本类型数据,直接push到新数组
        }
    }
    return result
}

5.冒泡排序

function bubbleSort(array){
  for (let i=array.length;i>0;i--){
    for (let j=0;j<i;j++){
      if (array[j]>array[j+1]){
        var temp=array[j];
        array[j]=array[j+1];
        array[j+1]=temp;
      }
    }
  }
  return array;
}
console.log(bubbleSort([10,8,3,2,2,4,9,5,4,3]));

6.用js递归的方式写1到100求和

function num(n) {
    if (n == 1) return 1;
    return num(n - 1) + n;
}
let sum = num(100);
console.log(sum, "sum")

7.输出1-100以内的素数

// 求1-100的素数 
function sushu () {
  var arr = [];
  // 1不是素数也不是和数 所以从2开始 2因为第二个循环不成立 所以直接push进去
  for (var i = 2; i <= 100; i++) {
    var flag = true; // 控制是否是素数的开关变量
    // 使用i%j 如果值为0 证明不是素数 关闭开关变量 跳出循环
    for (var j = 2; j < i; j++) {
      if (i % j == 0) {
        flag = false;
        break;
      }
    }
    // 开关变量为真时 证明i是素数 所以放到数组中
    if (flag) {arr.push(i)}
  }
  return arr;
}
var sushuArr = sushu();
console.log(sushuArr)

8.给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。
    示例 4:

输入:s = "([)]"
输出:false

示例 5:

输入:s = "{[]}"
输出:true

let isValid = function(s) {
  // 声明一个栈 stock
  let stock = [], length = s.length;
  // 字符串长度无法整除 2,游戏结束!
  if(length % 2) return false;
  // 遍历每个字符
  for(let item of s){
    switch(item){
        // 遇到左括号,统统压入栈即可
      case "{":
      case "[":
      case "(":
        stock.push(item);
        break;
        // 遇到右括号,检查前一个括号是否是对应的左括号
        // 是,对应左括号弹出栈即可
        // 否,游戏结束!
      case "}":
        if(stock.pop() !== "{") return false;
        break;
      case "]":
        if(stock.pop() !== "[") return false;
        break;
      case ")":
        if(stock.pop() !== "(") return false;
        break;
    }
  }
  // 遍历逻辑通过,最终检查下栈的长度,若没有内容,代表真的是有效括号字符串
  return !stock.length;
};

var s = "[{}}"
console.log(isValid(s))
  1. 判断字符串中出现次数最多的字符,并统计其次数
// 1.统计次数
var str = 'abdgdbcaethbganmugthaesqszaphfdvwd';
var obj = {};
// 创建了一个空的对象,存储字符串中的每个字符。属性:每个字符,属性值:该字符出现的次数
for (var i = 0; i < str.length; i++) {
    // 遍历字符串
    var chars = str.charAt(i);
    // chars代表字符串的每一个字符
    if (obj[chars]) {
        obj[chars]++;
    } else {
        obj[chars] = 1;
    }
    // obj[chars]属性值:该字符出现的次数
    // 如果已经存在,那么次数+1;否则赋值为1
}
console.log(obj);
// 输出对象obj,显示每个字符出现的次数

// 2.遍历对象,找出最大的次数
var max = 0;
var ch = '';
for (var k in obj) {
    if (obj[k] > max) {
        max = obj[k];
        ch = k;
    }
}
// k代表属性:每个字符
// obj[k]代表属性值:该字符出现的次数
// 将次数最多的字符赋值到ch

console.log('最多的字符是' + ch + ',次数为' + max);

  1. 数组去重
    1.  计数排序变形,背代码
    var a = [4,2,5,6,3,4,5]
    unique(arr) {
      for (var i = 0; i < arr.length; i++) {
        for (var j = i + 1; j < arr.length; j++) {
          if (arr[i] == arr[j]) {
            //第一个等同于第二个,splice方法删除第二个
            arr.splice(j, 1);
            j--;
          }
        }
      }
      return arr;
    }

    2.  使用 Set(面试已经禁止这种了,因为太简单)
    Array.from(new Set(a))

加了缓存后的Fibonacci 函数

var fibCache = [0,1,2];
function Fibonacci(i){
  if(fibCache[i]) return fibCache[i];
 return (fibCache[i]  = Fibonacci(i-1) + Fibonacci(i-2));
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 他人的整理与总结: https://leetcode.wang/ 1. & 15. K-sum 问题 此类问题的解...
    oneoverzero阅读 2,123评论 0 1
  • 1. 两数之和 给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回...
    JICO阅读 1,084评论 0 2
  • 20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否...
    Kola_King阅读 354评论 0 0
  • 一、问题 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串...
    Djbfifjd阅读 1,786评论 0 2
  • 20、有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有...
    BigBigFlower阅读 544评论 0 0

友情链接更多精彩内容