这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
本文主要总结了 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;
- }
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持 phperz!
来源: http://www.phperz.com/article/17/0601/328537.html