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));
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

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