1.  计算字符串中某个字符的个数

var aaa='1231011211009181';

function count(str){

var arr=[];

for(var i=0;i<str.length;i++){

if(str.charAt(i)=='1'){

arr.push(str.charAt(i));

}

}

return arr.length;

}

console.log(count(aaa));

2.数组去重

var arr=[1,1,1,2,2,1,3,1,3,4,5,6];

function arrDel(arr){

var result=[],

obj={};

for(var i in arr){

if(!obj[arr[i]]){ //判断对象的属性

result.push(arr[i]);

obj[arr[i]]=1;

}

}

return result;

}

console.log(arrDel(arr));

3. 数组冒泡排序

function bubbleSort(arr){

for(var i=0;i<arr.length-1;i++){

for(var j=i+1;j<arr.length;j++){

//获取前一个值和后一个值进行比较

if(arr[i]>arr[j]){

//创建中间变量 交换值

var cur=arr[j];

arr[j]=arr[i];

arr[i]=cur;

}

}

}

return arr;

}

4.数组快速排序

function quickSort(arr){

if(arr.length<=1){return arr};

//选基准值,可以是任意位置

var key=Math.floor(arr.length/2);

var keyValue=arr.splice(key,1)[0];

//定义两个数组

var left=[];

var right=[];

for(var i=0;i<arr.length;i++){

//小于基准的方左边、大于右边

if(arr[i]<keyValue){

left.push(arr[i]);

}else{

right.push(arr[i]);

}

}

//递归

return quickSort(left).concat([keyValue],quickSort(right));

//return typeof keyValue;

}

var array=[5,1,6,4,10,11,15,0,2];

console.log(quickSort(array));

//console.log(bubbleSort(array));

5.json 对象数组排序

var data = [{

name: "海外事业部",

value: 0.58

}, {

name: "内销",

value: 0.36

}, {

name: "互联网中心",

value: 0.78

}];

function compare(a,b){

return b.value-a.value;

}

data.sort(compare);

console.log(data);

6.删除数组的第一个元素,不直接改变数组

var a=[2,1,3,4,5,8];

function delFirst(arr){

var arr2=arr.slice(0);

arr2.shift();

return arr2;

}

console.log(delFirst(a));

7.判断一个字符串中出现次数最多的字符,统计这个次数

var str='addddfffssdfsadfsdfsafjsd';

var json={}; //定义对象来存放 对象属性的值

//遍历字符串,将重复出现的字符 累加

for(var i=0;i<str.length;i++){

if(!json[str.charAt(i)]){

json[str.charAt(i)]=1;

}else{

json[str.charAt(i)]++;

}

}

var iMax=0;

var icur='';

console.log(json);//{a:3,d:8,f:7,s:6,j:1}

//遍历 json对象取最大值

for(var val in json){

if(json[val]>iMax){

iMax=json[val];

icur=val;

}

}

console.log('出现最多的字符:'+icur,'出现次数:'+iMax);

8.求一个字符串的字节长度(中文字符占两个字节)

var str='czj陈志杰';

function getStrLen(str){

var json={len:0};

var pattern=/[\u4e00-\u9fa5]/;//unicode编码符合中文字符

for(var i=0;i<str.length;i++){

if(pattern.test(str.charAt(i))){

json['len']++;

}

}

return json['len']+str.length;

}

console.log(getStrLen(str));

9.javascript面向对象中继承实现

  子构造函数中执行父构造函数,并用call\apply改变this
克隆父构造函数原型上的方法

 

functionPerson(name){

this.name=name;

}

Person.prototype.showName=function(){

console.log(this.name);

}

Person.prototype.showJob=function(){

console.log(this.job);

}

function Student(name,job){

Person.apply(this,arguments);//改变this上下文环境

this.job=job;

}

for(var i in Person.prototype){

Student.prototype=Person.prototype;

}

newStudent('chenzhijie','student').showName();

newStudent('chenzhijie','student').showJob();

10.函数的链式调用 类似:add(1)(2)

function add(a){

var sum=a;

var tmp=function(y){

sum=sum+y;

return tmp;//为了完成链式调用

}

//以字符串的形式返回对象的原始值

tmp.toString=function(){

return sum;

};

return tmp;

}

console.log(add(1)(2)(3));//6

11. this的典型应用

事件: onclick  this->触发事件的对象

构造函数:  this->new 出来的object

call/apply : 改变this

12. 降低页面加载时间的方法

1. 压缩css 、js文件

2. 合并js、css文件 ,减少http请求

3. 外部js、css文件放在最底下

4.减少dom操作,尽可能用变量替代不必要的dom操作

13. Ajax工作原理

  1.创建ajax对象

if(window.XMLHttpRequest){

// code for IE7+, Firefox, Chrome, Opera,Safari

xmlhttp=new XMLHttpRequest();

}else{

// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

2. 判断请求方式(get/post)

3. 打开连接 xmlhttp.open()

4. 发送 xmlhttp.send(null/data)

5. 当ajax对象完成第四步(onreadystatechange)数据接收完成,判断(xmlhttp.readyState==4)和http响应状态(status)200-300之间或者304(缓存)执行回调函数,返回数据xmlhttp.responseText

13. 数组排序,如[[1,2],[2,1],[1,3]]->[[1,2],[1,3],[2,1]]

vararr1=[[2,4],[1,2],[2,1],[1,3]];

function comparetwo(a,b){

if(a[0]!=b[0]){

return a[0]-b[0];

}else{

return a[1]-b[1];

}

}

var result=arr1.sort(comparetwo);

console.log(result);

14.HTTP与HTTPS的区别

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS和HTTP的区别主要如下:

  1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

  2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

  3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

  4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

15.查找数组中某元素的位置

function indexOf(arr,item){

for( vari=0;i<arr.length;i++){

if(arr[i]==item){returni;}

}

return -1;

}

var arr1=[1,2,3,4];

var result=indexOf(arr1,2);

console.log(result);

16.数组求和

function sum(arr) {

var sum=0;

arr.forEach(function(value){

sum+=value;

});

return sum;

}

var arr=[1,2,3,4];

console.log(sum(arr));

17.移除数组中的item 元素,不直接修改原先数组

function remove(arr,item){

var arr2=[];

arr.forEach(function(val){

if(val!=item){arr2.push(val);}

});

return arr2;

}

18.splice向/从数组中添加/删除项目,然后返回被删除的项目。

function remove2(arr,item){

var newarr = arr.slice(0);

for(vari=0;i<newarr.length;i++){

if(newarr[i] == item){

newarr.splice(i,1);

i--;//删除一个元素后,后面的元素会提前一位

}

}

return newarr;

}

19.改变原始数组

function remove3(arr,item){

for(vari=0;i<arr.length;i++){

if(arr[i] == item){

arr.splice(i,1);

i--;//删除一个元素后,后面的元素会提前一位

}

}

return arr;

}

var arr=[1,2,3,3,5,4,4,9];

console.log(remove2(arr,4));

20.添加元素 不直接修改原先数组

function append(arr, item) {

// return arr.push(item);

return arr.concat([item]);

}

var arr=[1,2,3,5];

console.log(append(arr,4));

21.删除数组的最后一个元素,不直接改变数组

function truncate(arr) {

var arr2=arr.slice(0);

arr2.pop();

return arr2;

}

function truncate2(arr) {

vararr2=arr.slice(0,arr.length-1);//返回一个新数组

return arr2;

}

var arr=[1,2,3,4,5];

console.log(truncate2(arr));//1,2,3,4

22.在数组开头添加元素,不直接改变数组

function prepend(arr, item) {

var arr2=arr.slice(0);

arr2.unshift(item);

return arr2;

}

var arr=[1,2,3,4,5,6];

console.log(prepend(arr,0));

23.向数组指定位置添加元素,不直接改变数组

function insert(arr, item,index) {

var arr2=arr.slice(0);

arr2.splice(index,0,item);

return arr2;

}

var arr=[1,2,3,4];

console.log(insert(arr,5,2));

 24.统计数组中的值等于item元素 出现的次数

function count(arr, item) {

var count=0;

for(var i=0;i<arr.length;i++){

if(arr[i]==item){

count++;

}

}

return count;

}

var arr=[1, 2, 4, 4,3, 4, 3];

console.log(count(arr,4));

js 面试题之---数组、字符串操作相关推荐

  1. 微信小程序开发——JS中字符和数组的操作

    字符的操作 var word = "hello world" length字符串长度 let len = word.length trim去掉空格 word.trim() inde ...

  2. java面试题十 string字符串操作

  3. Javascript——进阶(事件、数组操作、字符串操作、定时器)

    目录 事件属性 数组 字符串操作 定时器 变量的作用域 封闭函数 弹框接收数据 事件属性 参数 描述 onclick 鼠标点击事件 onmouseover 鼠标移入标签,触发行为 onmouseout ...

  4. javascript常见方法汇总之一——数组字符串相关

    (转载至慕课网) 原文链接:https://www.imooc.com/article/46933 github地址:https://github.com/dorseysen/notes-about- ...

  5. js对象、数组、字符串操作总结(保姆级教程)

    对象操作 1. 扩展运算符 作用是遍历某个对象或者数组 testMethod() {// 三个点 ... 俗称扩展运算符或延展运算符,需要注意的是扩展运算符在拷贝的时候只能深拷贝第一层,第二层及以下都 ...

  6. js map 排序_数组方法写给女友的一系列 JS 数组操作(建议收藏 | 内附思维导图)...

    前言 最近和女友,咳咳...(说出来可能会被打s)学习JS数组方法,用几个字形容的话就是听说过,实际使用.遇到的时候就分不清具体方法会得到怎样的结果. 今天我将通过这篇文章好好整理一下关于JS数组的方 ...

  7. js函数语法:ASCII 码的相互转换,字符串操作,数学计算

    ASCII 码的相互转换 for (let i = 'a'.charCodeAt(); i <= 'z'.charCodeAt(); i++) {a.push(String.fromCharCo ...

  8. js中对arry数组的各种操作小结

    最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊,为了在以后的工作中写出最优化的代码,我 ...

  9. js 包含某个字符串_[译] 5 大 JavaScript 字符串操作库

    原文地址:5 String Manipulation Libraries for JavaScript 原文作者:Mahdhi Rezvi 译文出自:掘金翻译计划 本文永久链接:https://git ...

最新文章

  1. 全浏览器兼容的DIV拖动效果
  2. python快速编程入门第13章-Python快速编程入门,打牢基础必须知道的11个知识点...
  3. NET 2.0中WinForm自定义的程序配置存放到哪里去了
  4. 程序员面试金典 - 面试题 10.11. 峰与谷(排序/不排序)
  5. torch.nn.Module()
  6. python读取文件数据堆栈溢出的原因_堆栈溢出一般是什么原因?
  7. Django_ajax
  8. linux常用命令速查手册PDF下载
  9. 点云质量评估_点云配准中常用的评价指标
  10. html 播放wav,js播放wav文件(源码)
  11. 方形16QAM的C语言仿真
  12. Python修改证件照底色,get新技能
  13. 拼多多狂砸百亿补贴的iphone是真的吗?
  14. 斯坦福大学公开课IOS 7 学习笔记(2)
  15. hdfs写流程和MR缓冲区
  16. Placement Rules 使用文档
  17. BUUCTF misc 九连环隐写
  18. 纳米数据,足球比分,赛事数据接口api,足球数据接口
  19. 辗转相除法求最大公约数原理分析(附代码实现)
  20. Dropbox VS 华为网盘

热门文章

  1. 如何防止表单重复提交(后端)
  2. 打开ftp文件服务器,打开ftp服务器文件管理
  3. 关于此博客更名和改版的说明
  4. 解决rk3288 摄像头顿卡问题解决过程
  5. 《和码中文》第一册词组(共25课)
  6. layui define 的使用
  7. 新零售时代,异业联盟怎么做?
  8. 昆石VOS3000/VOS2009 V2.1.7.01/V2.1.7.03 操作指南
  9. 如何将网易云音乐的歌单同步到spotify
  10. 如何定位公众号形象,有什么方法