一、数组API:
js中数组的声明方式:
var tmp = []; // 简写模式
var tmp = new Array(); // 直接new一个
var tmp = Array(); // 或者new也可以
在new数组的时候可以传入一个参数,表示数组的初始化长度
// new的时候传入一个参数表示初始化数组长度
var tmp = new Array(3);
alert(tmp.length); // 3
创建一个只有一个元素3的数组,那么使用 new 方法是不能实现的,因为系统会把你传入的3当作数组的长度,除非使用引号引起来当作字符串
var tmp = new Array('3');
alert(tmp); // 3
//或者使用简写模式创建数组,这样就可以创建只有一个数字元素3的数组
var tmp = [3]
alert(typeof tmp[0]); // number
也可以初始多个元素,并且元素的值可以是任意类型
// 简约模式创建数组
// 数组的元素可以是任意一种数据类型
var tmp = [3,true,8.5,{'name':'lizhong'},['a','b']];
alert(tmp.length); // 5
(1)reverse(); (!!会改变原数组!!)
ex:翻转字符串
思路:先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串(结果必须得是一个字符串)。
当你完成不了挑战的时候,记得开大招’Read-Search-Ask’。
这是一些对你有帮助的资源:
Global String Object
String.split();
Array.reverse();
Array.join();
function reverseString(str) {
var myArray=str.split(""); // split("") 分隔:对象-> 数组
var a = myArray.reverse(); //进行翻转数组
var str1 = a.join(""); //join("") 分隔:数组-> 对象
return str1; // 输出 “olleh”
}
reverseString("hello");
(2)push(); (!!会改变原数组长度!!)
原理:push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。返回值为把指定的值添加到数组后的新长度。
语法:arrayObject.push(newelement1,newelement2,…,newelementX)
参数newelement1,必需。要添加到数组的第一个元素。
参数newelement2,可选。要添加到数组的第二个元素。
参数newelementX,可选。可添加多个元素。
push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。
ex:
var arr = ['a','b'];
arr.push('c');
console.log(arr); // ['a','b','c']
(3)unshift();(!!会改变原数组长度!!)
原理:unshift() 方法在数组的前面添加一个或多个数组项,并返回新的长度。
var arr = ['a','b'];
arr.unshift(1,2);
console.log(arr); // [1, 2, "a", "b"]
(4)Pop(); (!!会改变原数组长度!!)
原理:删除数组末尾元素,返回从数组尾部删除的元素。如果数组为空,返回undefined
var arr= ['a','b','c'];
var arr1 = arr.pop();
console.log(arr1); // c
console.log(arr); // ["a", "b"]
(5)Shift(); (!!会改变原数组长度!!)
原理:删除数组开头元素,返回从数组开头删除的元素。如果数组为空,返回undefined
var arr= ['a','b','c'];
var arr1 = arr.shift();
console.log(arr1); // a
console.log(arr); // ["b", "c"]
(6)toString();(不改变原数组,仅转换元素类型 typeof()查看)
原理:函数用于将当前对象以字符串的形式返回——转为字符串。最好用String();所有对象都具有该方法。注意:Number类还可以有进制的转换。
var num = 15;
console.log(num,typeof(num)); // 15 "number"
var n = num.toString();
console.log(n,typeof(n)); //15 string
Number类还可以有进制的转换:
var num = 15;
var a = num.toString(); // 15
var b = num.toString(2); // 1111
var c = num.toString(8); // 17
var d = num.toString(16); // f
(7)Join();(不改变原数组,仅转换元素类型 typeof()查看)
原理:分隔—— 数组—>字符串对象。原理:其作用和toString()大体相同。
// 有一个字符串"111","222","333",我们要输出为111,222,333这样的格式
var a = ["111","222","333"].join(","); // 以‘,’为分界分割
console.log(a); //111,222,333
// 要直接输出111222333,而不输出111,222,333,那使用join再合适不过。
var a = ["111","222","333"].join("");
console.log(a); //111222333
(8)Split(); (不改变原数组,仅转换元素类型 typeof()查看)
原理:分隔—— 对象—>数组。原理:将字符串划分成子串,将一个字符串做成一个字符串数组。
var str='hello';
var arr1 = str.split("");
console.log(arr1); // [h,e,l,l,o]
(9)Splice();(!!会改变原数组长度!!)
原理:插入、删除或替换数组的元素。
1.删除(a,b)-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数)
2.插入(a,b,c)-向数组指定位置插入任意项元素。三个参数,第一个参数(起始位置),第二个参数(要删除的元素的下标),第三个参数(插入的项内容)
3.替换(a,b,c)-向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)
var lang = ["php","java","javascript"];
//删除
var removed = lang.splice(1,1);
alert(lang); //php,javascript //原数组
alert(removed); //java ,返回删除的项
//插入
var insert = lang.splice(0,0,"asp"); //从第0个位置开始插入
alert(insert); //返回空数组
alert(lang); //asp,php,java,javascriptt
//替换
var replace = lang.splice(1,1,"c#","ruby"); //删除一项,插入两项
alert(lang); //php,c#,ruby,javascriptt
alert(replace); //java, 返回删除的项
(10)Slice();截取
提取字符串的一部分,并返回一个新字符串(与 substring 相同)。传入参数是 起始位置 和 结束位置。
var a='hello';
var sub_string1 = a.slice(1); //起始位置下标 没有数字就截取到最后。
//sub_string1 = "ello" // 返回截取到的元素
var sub_string2 = a.slice(1,4); //起始位置 和 结束位置(不包括结束位置的下标)。
//sub_string2 = "ell"
(11)Substr();截取
//返回字符串的一个子串,传入参数是 起始位置 和 长度
var sub_string1 = a.substr(1);
//sub_string1 = "ello"
var sub_string2 = a.substr(1,4); // 起始位置 和 长度
//sub_string2 = "ello"
(12)substring();截取
返回字符串的一个子串,传入参数是 起始位置 和 结束位置。
var sub_string1 = a.substring(1);
//sub_string1 = "ello" // 只有一个参数时:从1下标截取到最后
var sub_string2 = a.substring(1,4); / 起始位置下标 和 结束位置(不包括结束位置的下标)。
//sub_string2 = "ell"
(12)Concat();拼接
//将两个或多个字符的文本组合起来,返回一个新的字符串。
var a = "hello";
var b = ",world";
var c = a.concat(b);
alert(c);
//c = "hello,world"
(14)Sort();排序(正序,倒序)
var arr = [10,1,100,500,5];
console.log(arr); // [10, 1, 100, 500, 5]
function mtsort(a,b){
return a-b; // 正序
return b-a; // 倒序
}
console.log(arr.sort(mysort));[1, 5, 10, 100, 500]
ex:找到提供的句子中最长的单词,并计算它的长度。函数的返回值应该是一个数字。
function findLongestWord(str) {
var array=str.split(" ");
var newArray=[];
for(var i=0;i<array.length;i++){
newArray.push(array[i].length);
}
// return newArray.sort();
return newArray.sort(function(a,b){return a-b;})[newArray.length-1]; // [index]
}
findLongestWord("What if we try a super-long word such as otorhinolaryngology");
二、字符串API:
(1)toUpperCase();转为大写
// 将整个字符串转成大写字母。
var a = "hello";
var upper_string = a.toUpperCase();
//upper_string = "HELLO"
(2)toLowerCase();转为小写
// 将整个字符串转成小写字母。
var a = "HELLO";
var lower_string = a.toLowerCase();
//lower_string = "hello"
(3)length();查看字符串长度
// 返回字符串的长度,所谓字符串的长度是指其包含的字符的个数。
var a = "hello";
var len = a.length();
//len = 5
(4)charAt();字符串[ 下标 ]。由下标查找对应字符串
// 返回指定位置的字符。
var a = "hello";
var get_char = a.charAt(0);
//get_char = "h"
(5)charCodeAt();查看Unicode码
var a = "hello";
var n = a.charCodeAt(0);
// n=104
(6)indexOf();根据指定字符,选中出现的下标位置。(与charAt相比使用)
// 返回字符串中一个子串第一处出现的索引(从左到右搜索)。如果没有匹配项,返回 -1 。
var a = "hello";
var index1 = a.indexOf("l"); // 2 // 出现位置的下标
var index2 = a.indexOf("l",3); // 3
var index3 = a.indexOf("l",4); // -1
(7)lastIndexOf();查找指定字符最后一次出现位置
// 返回字符串中一个子串最后一处出现的索引(从右到左搜索),如果没有匹配项,返回 -1 。
var a = "hello";
var index1 = lastIndexOf('l');
//index1 = 3
var index2 = lastIndexOf('l',2)
//index2 = 2
(8)replace();查找替换
// 用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。
var a='hello,hello';
var re=new RegExp('hello','g'); // 创建正则表达式 g:全局查询并替换
var result2 = a.replace(re,"Hello"); //符合正则,执行替换
console.log(result2); //Hello,Hello
(9)match();查找。返回对象
// 第一种用法:字符串匹配
var str = "hello world";
var ret = str.match("hello");
console.log(ret); // hello 没有匹配到,就返回null。
// 第二种用法:正则表达式匹配
var str="1 plus 2 equal 3";
var ret= str.match(/\d+/g))
console.log(ret); // ["1", "2", "3"]
// 注意正则表达式的后面一定要加上g,这个标记这个ret的值是1,2,3 匹配所有的数字并用逗号隔开,否则返回null
(10)search();查找。返回第一次出现
// 执行一个正则表达式匹配查找。如果查找成功,返回字符串中匹配的索引值。否则返回 -1 。
var a='hello,hello';
var b='';
var re=new RegExp('hello','g'); // 创建正则表达式 g:全局查询并替换
var index1 = a.search(re);
console.log(index1); // 0
var index2 = b.search(re);
console.log(index2); // -1