一、js的对象之数组
1. Array数组
- 可以保存多种类型,大小也可以动态调整
- 主要是用来存储一组数据
1.创建数组
1.使用Array构造函数:
语法:new Array()
ps.小括号()说明:
- 预先知道数组要保存的项目数量
- 向数组构造函数传递数组应该包含的项
var colors=new Array(3);
var nums=new Array(1,3,6,9)
console.log(colors);
console.log(nums);
2.使用数组字面量表示法:
由包含了数组的[ ]表示,逗号隔开
var cols=["red","blue"];
var infos=[6,"marry",true];
console.log(cols);
console.log(infos);
2.数组元素的读写:
console.log(infos[2]); //读写infos中第三个值
取不到时显示undefined
var colors=new Array(3);
colors[0]="#f00";
colors[1]="#0f0";
colors[2]="#000";
console.log(colors);
3.数组长度:
- 语法:array.lengh
- 功能:获取数组array的长度
- 返回值:number
var arr=["a","b","c"];
console.log(arr.length); //打印出来是3
- 说明:
(1)通过设置length可以从数组的末尾移除或添加新项
var arr=["a","b","c"];
arr.length=2;
console.log(arr);
console.log(arr[2]); //已经删除了第三个数
(2)把一个值放在超出当前数组大小的位置上时,会重新计算数组长度值,长度值等于最后一项索引加1。
var arr=["a","b","c"];
arr[99]="z";
console.log(arr.length); //打印出来是(99+1)=100
4.数组的遍历
var arr=["a","b","c"];
for(var i=0;i<arr.length;i++)
{
console.log(arr[i]);
}
5.数组栈方法:
push()
- 语法:arrObject.push(newele1,newwlw2,newele3,…neweX)
- 功能:把他的参数顺序添加到arryObject的尾部。
- 返回值:把指定的值添加到数组后的新长度。
var colors=new Array("red","blue","yellow");
colors.push("pink","green");
console.log(colors);
unshift()
添加到数组的前面,其余和push相同
shift()
- 语法:arrObject.shift()
- 删除数组的第一个元素
- 返回值:被删除的元素
pop
- 语法:arrObject.pop()
- 删除数组的最后一个元素
- 返回值:被删除的元素
var nums=[2,7,9,6];
var size=nums.unshift(77,99);
var n=nums.pop();
console.log(n);
console.log(nums);
6.数组转换方法:
join()
- 语法:arrayObject.join(separator)
- 功能:用于把数组中所有元素放入一个字符串
- 返回值:字符串
var nums=[2,7,9,6];
var str=nums.join();
console.log(str); //2,7,9,6
console.log(typeof(str)); //string
var words=["hello","hi","run"];
var wordstr=words.join(); //hello,hi,run
var wordstr=words.join(""); //hellohirun
var wordstr=words.join("-"); //hello-hi-run
console.log(wordstr);
7.数组重排序:
reverse
- 语法:stringObject.reverse()
- 功能:用于颠倒数组中的元素
- 返回值:数组
var nums=[2,7,9,6];
nums.reverse();
console.log(nums); //(4) [6, 9, 7, 2]
var str=["a","b","c"];
/*console.log(str.reverse()); //(3) ["c", "b", "a"] */
console.log(str.reverse().join()); //c,b,a
sort()
- 语法:arrayObject.sort(sortby)
- 功能:排序
- 返回值:数组
- 说明:sort比较的是字符串,就算是数值,也比较的是字符串;sort()方法可以接收比较函数作为参数
var nums=[11,18,9,4,50];
console.log(nums.sort()); //(5) [11, 18, 4, 50, 9]
var words=["run","hi","hello"];
console.log(words.sort()); //(3) ["hello", "hi", "run"]
sort()方法可以接收比较函数作为参数
var arr=[11,18,9,4,50];
arr.sort(function(a,b){return b-a}); //降序 a-b升序
console.log(arr); //(5) [50, 18, 11, 9, 4]
concat()
- 语法:arrayObject.concat(arrayX,arrayX,…arrayX)
- 功能:用于连接两个或多个数组
- 返回值:数组
var arr1=["a","b","c"];
var arr2=["d","e"];
var arr3=arr1.concat(arr2,["3","99"]);
console.log(arr3); //(7) ["a", "b", "c", "d", "e", "3", "99"]
slice()
- 语法:arrayObject.slice(start,end);
- 功能:从已有的数组中返回选定的元素
- 参数:
- start(必须):规定从何处开始选取,如是负数,从数组尾部开始算起(可以是负数,从尾部开始选择)
- end(可选):从何时结束选取,是数组片段处的数组下标,
- 说明:
- 没设定end时,从start开始到结束。
- 含有负数,则加上数组长度确定位置
- 返回值:数组
var arr=["a","b","c","d","e"];
var newarr=arr.slice(1,3);
console.log(newarr); //(2) ["b", "c"]
面试题:
完成以下代码段,实现b数组对a数组的拷贝
var a=[1,"yes",3];
方法一:
var a=[1,"yes",3];
var b;
b = new Array();
for (var i=0;i<a.length; i++)
{
b.push(a[i]);
}
console.log(b); //(3) [1, "yes", 3]
方法二:
var a=[1,"yes",3];
var b=[].concat(a); //var b=a.concat();
console.log(b); //(3) [1, "yes", 3]
方法三:
var a=[1,"yes",3];
var b=a.slice(0);
console.log(b); //(3) [1, "yes", 3]
splice
删除:
- 语法:arrayObject.splice(index,count);
- 功能:删除从index处开始的零个或多个元素
- 返回值:含有被删除的元素的数组。
- 参数:count是要删除的项目数量,如果设置为零,则不会删除项目。如果不设置,则删除从index开始的所有值。
var arr=["a","b","c","d","e"];
var newarr=arr.splice(2,2);
console.log(arr); //(3) ["a", "b", "e"]
console.log(newarr); //(2) ["c", "d"]
插入:
- 语法:arrayObject.splice(index,count);
- 功能:在指定位置插入值
- 参数:index:起始位置
var arr=["a","b","c","d","e"];
var insertA=arr.splice(3,0,"m","n");
console.log(insertA); //[] 返回的是空值
替换:
- 语法:arrayObject.splice(index,count,item1,…,itemX);
- 功能:在指定位置插入值,且删除任意数量的项
- 参数:index:起始位置 count:要删除的项数
- 返回值:从原始数组中删除的项
var arr=["a","b","c","d","e"];
var insertA=arr.splice(1,2,"x","y","z");
console.log(arr); //(6) ["a", "x", "y", "z", "d", "e"]
console.log(insertA); //(2) ["b", "c"]
8.添加位置:
indexof
- 语法:arrayObject.indexof(searchvalue,startIndex);
- 功能:从数组开头位置向后查找
- 参数:searchvalue:必需,要查找的项 startIndex:可选,起点位置的索引
var arr=[1,7,9,6,7];
var pos=arr.indexOf(7);
console.log(pos); //1
var pos=arr.indexOf(7,2);
console.log(pos); //4
- lastindexOf 就从末尾开始检测
- 查找时必须全等
二、String
1. charAt
和chatcodeAt
- 语法:stringObject.charAt(index)
- 功能:返回stringObject中index位置的字符。code返回字符编码
var str="helloworld";
console.log(str.charAt(1)); //e
console.log(str.charCodeAt(4)); //0的编码111
2.indexOf
和lastindexOf
(从后往前)
- 语法:stringObject.indexOf(“o”);
- 功能:从一个字符串楷书搜索给定的字符串,返回字符串的位置
- 返回值:数值
- 说明:没有找到子字符串,返回-1
var str="helloworld";
console.log(str.indexOf("rl")); //7
3.slice
- 语法:stringObject.slice(start,end);
- 功能:截取子字符串。
- 参数:
- start(必须):规定子字符串开始位置
- end(可选):从何时结束选取,不包括end。没设定end时,从start开始到结束。
- 参数为负数:负值和字符串长度相加。
var str="helloworld";
console.log(str.slice("3","5")); //lo
console.log(str.slice(-3)); //rld
substring()
用法和slice()一模一样。
区别:
- 参数为负数,自动将参数转换为0
- 会将较小的数作为开始位置,将较大的数作为结束位置。
console.log(str.substring(2,-5)); //(0,2)
console.log(str.substring(-7,5)); //(0,5)
substr()
- 语法:stringObject.substr(start,length);
- 功能:截取子字符串。
- 参数:
- start(必须):规定子字符串开始位置
- len(可选):截取的总长度
- start为负数:负值和字符串长度相加。
- len为负数:返回空字符串
var str="helloworld";
console.log(str.substr(6,3)); //orl
三、综合应用
var url="index.txt";
function getFileFormat(url)
{
var pos=url.lastIndexOf(".");
return url.slice(pos);
}
var formatName=getFileFormat(url);
console.log(formatName); //.txt
1.split
- 语法:stringObject.split(separtor);
- 功能:把一个字符串分割成字符串数组。
- 返回值:Array
- 说明:separtor:必需 分隔符
var str='welcome-to-beijing';
var arr=str.split("-");
console.log(arr); //(3) ["welcome", "to", "beijing"]
2.replace()
- 语法:stringObject.replace(regexp/substr,replacement);
- 功能:在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
- 返回值:String
- 参数:
- replace:必需 规定字符串或要替换的模式的RegExp对象
- replacement:必需 一个字符串值
var str='welcome-to-beijing';
var arr=str.replace("-"," ");
console.log(arr); //welcome to-beijing
3.toUpperCase()
和toLowerCase()
- 语法:stringObject.toUpperCase()
- 功能:把字符串转换为Upper大写/Lower小写。
var str='welcome';
console.log(str.toUpperCase()); //WELCOME
var str='welcome';
var upper=str.charAt(3).toUpperCase()
console.log(upper); //C
function camleback(str)
{
//通过-这个分隔符,将str拆分成数组
var arr=str.split("-"),newStr=arr[0];
//console.log(arr); //(3) ["border", "left", "color"]
for (var i = 1; i<arr.length; i++)
{
var word=arr[i];
//将每一个单词的首字母转换为大写+连接字符串
newStr+=word.charAt(0).toUpperCase()+word.substr(1);
}
console.log(newStr); //borderLeftColor
}
var camelFormat=camleback("border-left-color");