当前位置: 首页 > news >正文

js基础总结 一

最近在梳理js的基础,首先从数组和字符串开始。
string 常用方法:

1.substring(start开始位置的索引,end结束位置索引) 截取的位置不包含结束位置的字符,只写一个参数表示从开始位置截取到最后
var str='abcdefg';

str.substring(1) //得到bcdefg str.substring(1,3) //得到bc

输入负值时将负值变为0,哪个较小作为开始位置

str.substing(-1,1) =>str.substring(0,1) //a
str.substring(1,-2) =>str.substring(0,1) //a

2.slice(start开始位置索引,end结束位置索引) 基本和substring相似,区别在参数为负数。

var str='abcdefg';

str.slice(1) //bcdefg str.substring(1,3) // bc

输入负值时 值与字符串的长度相加

str.slice(-1) =>str.slice(6) //g
str.slice(1,-2) =>str.slice(1,5) //bcde
str.slice(-2,-1)=>str.slice(5,6) //f
值绝对值大于字符串的长度时变为 0

str.slice(-22) =>str.substring(0) //abcdefg

第二个参数绝对值大于字符串的长度时,返回''

3.substr(start开始位置索引,end需要返回的字符个数)

var str='abcdefg';

str.substr(1) //bcdefg str.substr(1,1) //b

输入负值时 start参数与字符串的长度相加 ,end为负时参数变为0

str.substr(-1) =>str.substr(6)//g

str.substr(-2,-3) // ''

4.charAt(index) 方法返回指定索引位置处的字符。如果超出有效范围(0与字符串长度减一)的索引值返回空字符串.

var str='abcdefg';

str.charAt(2) // c

5.index(string) 返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。

var str='abcdefga' str.indexOf('a') // 0 str.indexOf('h') //-1


6.lastIndexOf(string) 倒叙查找

返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。


var str='abcdefga' str.lastIndexOf('a') // 7

7.split(str) 将字符串以参数分割为数组

var str='abcadeafg' str.split('a') //["", "bc", "de", "fg"]

8. toLowerCase方法返回一个字符串,该字符串中的字母被转换成小写。


9. toUpperCase方法返回一个字符串,该字符串中的所有字母都被转换为大写字母。

10.match() – 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配


11.search 方法返回与正则表达式查找内容匹配的第一个字符串的位置。


12.replace 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配


http://www.cnblogs.com/bijiapo/p/5451924.html


数组常用的方法

1. push 添加到最后 返回添加后的数组

2. unshift 添加到最前面 返回添加后的数组

3. shift 删除(从前面) 返回处理后的数组

4. pop 删除最后一项 返回处理后的数组

5. reverse 数组翻转 返回处理后的数组

6. join 数组转化为字符串

var arr=[1,2,3,4,5], str=arr.join('--');

console.log(str); // 1--2--3--4--5 以join内的参数切割数组

console.log(arr); // [1,2,3,4,5] 原数组未变


7. slice(start,end) 截取数组 从start(开始) 到end(结束 不包含)

返回新数组,原数组不变

var arr=[1,2,3,4,5],new=arr.slice(2,4);

console.log(new); // [3,4]

console.log(arr); // [1,2,3,4,5]

8. concat 数组合并


9. splice(开始下标,个数,ele1,ele2....) 剪接数组

(1).一个参数 从参数位置截取 填写负数类似上面str slice 返回截好的数组 原数组变化
var arr=[1,2,3,4,5];

console.log(arr.splice(1)); // [2,3,4,5]

console.log(arr); // [1]

console.lgo(arr.splice(-1)) // [5]

(2).二个参数 截取 (开始位置,个数) 返回截好的数组 原数组变化

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

console.log(arr.splice(1,3)); // [2,3,4]

console.log(arr) // [1,5]

arr.splice(0,1) =>arr.shift()

arr.splcie(arr.length-1,1) =>arr.pop()

(3).添加 原数组增加

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

console.log(arr.splice(1,0,13)); // []

console.log(arr); // [1,13,2,3,4,5]

(4).替换

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

console.log(arr.splice(1,2,'a','b')) // [2,3]

console.log(arr); // [1,'a','b',4,5]


arr.splice(0,0,1) =>arr.unshift(1);

arr.splice(arr.length,0,1) => arr.push(1)

10. arr.forEach(item,index,array){} 遍历,循环 类似jquery的each

其中的item参数是数组中的内容,index为其索引,array表示数组本身

var arr=[1,2,3,4,5];
arr.forEach(function(item,index,array){

})

遇到嵌套跳出循环出现问题,暂时没有解决;

11. map方法 映射 用法和forEach类似

var men=[
{'name':1,'age':12},
{'name':2,'age':22},
{'name':3,'age':33}
],

age=men.map(function(item){
return item.age;
})

12. arr.sort 排序

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

console.log(arr.sort()) // [1,11,2,22,3,33,4,5]

默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序

arr.sort(function(a,b){ return a-b})

a-b从小到大 b-a从大到小


13. 顺便写写我知道的排序方法

(1)冒泡排序 每次比较相邻的两个数,如果后一个数比前一个数小,换位置

function bSort(arr){
var tmp;
for(var i=0,len=arr.length-1;i<len;i++){
for(var j=0;j<len;j++){
if(arr[j]>arr[j+1]){
//换位置
tmp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=tmp;
}
}
}
return arr;
}

function bSort(arr){
var tmp;
arr.forEach(function(item,i){
arr.forEach(function(item,i){
if(item>arr[i+1]){
//换位置
tmp = arr[i + 1];
arr[i + 1] = arr[i];
arr[i] = tmp;
}
})
})
return arr
}

(2)快速排序 二分法,找到中间的数,取出来(新数组),原数组没,每次和此数比较,小的放到左边,大的放到右面

function fastSoft(arr){
var len=arr.length;
if(len<=1){ return arr}
var cIndex=Math.floor(len/2),
c=arr.splice(c,1),
left=[],
right=[];
arr.forEach(function(item,i){
if(item<c[0]){
left.push(item);
}else{
right.push(item);
}
})
return fastSoft(left).concat(c,fastSoft(right));
}

14. 数组的去重也写下吧

(1)双层循环不是很好

var arr=[2,3,2,2,2,4,5],
arr2=[];
function find(arr2,ele){
for(var i= 0,len=arr2.length;i<len;i++){
if(arr2[i]==ele) return true;
}
return false;
}

for(var i= 0,len=arr.length;i<len;i++){
if(!find(arr2,arr[i])){
arr2.push(arr[i]);
}
}

(2)利用json的key值无重复

var arr=[2,3,2,2,2,4,5],
json={},
arr2=[];

arr.forEach(function(item,i){
if(!json[item]){
json[item]=222;
}
});
for(var name in json){
arr2.push(Number(name));//类型发生变化了
}

(3) 利用sort方法排序,去掉旁边相同项

var arr=[2,3,2,4,4,4,5],
arr2=[];
arr.sort();
for(var i=0;i<arr.length;i++){
if(arr[i]==arr[i+1]){
arr.splice(i--,1);
}
}

一些常见数学方法
math.abs() 取绝对值 math.ceil() 向上取整 math.floor() 向下取整
math.round() 四舍五入 math.roundom

function getRan(n,m){
return Math.floor(Math.random()*(m-n)+n);
}

数组和字符串的一些综合应用
1. 截取后缀名

(1) var str='1.xxx.avi';
str=str.substring(str.lastIndexOf('.')+1);
(2) var str='1.xxx.avi';

var arr=str.split('.');

console.log(arr[arr.length-1]);

2.字母翻转,首字母大写

var str='wo shi yi ge demo',
arr=str.split(' ');
for(var i=0;i<arr.length;i++){
console.log()
arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
}
arr.reverse();
str=arr.join(' ');

3. str中字符出现次数的统计

var str='aaaandkdffsfsdfsfssq12345',
json={},
n= 0,
sName;

for(var i= 0,len=str.length;i<len;i++){
var Letter=str.charAt(i);
//统计次数
if(json[Letter]){
json[Letter]++;
}else{
json[Letter]=1;
}
}
//找最大
for(var name in json){
if(json[name]>n){
n=json[name];
sName=name;
}
}
console.log('出现最多的字母'+sName+'次数为'+n);

4. 简单的url参数解析

function getData() {
var search = window.location.search.substring(1);
if (!search) {
return;
}
var arr = search.split('&'),
arr2 = [],
json = {},
key,
alue;
for (var i = 0; i < arr.length; i++) {
arr2 = arr[i].split('=');

key = arr2[0];
value = arr2[1];
json[key] = value;
}

return json;
}

转载于:https://www.cnblogs.com/itchenpeng/p/6039933.html

相关文章:

  • 总结Selenium自动化测试方法(四)WebDriver常用的操作
  • js 时间与时间戳的转换
  • HTTP——学习笔记(1)
  • ORACLE 体系结构
  • 数字证书调研整理-基本概念
  • delphi 中sql的语法规范
  • sql数据库链接
  • 脱水缩合
  • AIDL小结
  • jQuery简单的Ajax调用示例
  • 作业1:灯泡问题
  • Tomcat之web项目部署
  • 学习什么是线程安全与线程不安全(转)
  • 第七次实验作业
  • 使用IntelliJ IDEA 14和Maven创建java web项目
  • co.js - 让异步代码同步化
  • Django 博客开发教程 16 - 统计文章阅读量
  • ECMAScript入门(七)--Module语法
  • ES6核心特性
  • go append函数以及写入
  • input实现文字超出省略号功能
  • java中的hashCode
  • JS基础之数据类型、对象、原型、原型链、继承
  • Linux Process Manage
  • vue总结
  • Web Storage相关
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 后端_MYSQL
  • 缓存与缓冲
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端代码风格自动化系列(二)之Commitlint
  • 前端面试题总结
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 项目管理碎碎念系列之一:干系人管理
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • # Maven错误Error executing Maven
  • (1)Nginx简介和安装教程
  • (solr系列:一)使用tomcat部署solr服务
  • (第二周)效能测试
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .htaccess配置重写url引擎
  • .NET BackgroundWorker
  • .Net core 6.0 升8.0
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net 调用php,php 调用.net com组件 --
  • .NET 中的轻量级线程安全