您的位置:首页 > 移动开发 > Objective-C

String类型、Number类型、Object类型、Array类型的基本方法总结

2018-03-20 19:34 489 查看

一、String类型

String类型可以使用String构造函数来创建:

var stringVal = new String("Hello welcome");


1.字符方法

charAt()
charCodeAt()
方法用于访问字符串中的特定字符,接收一个参数(基于0的字符位置),需要注意的是他们返回的值。

var stringVal = "Welcome to here";
//输出"W",以单字符字符串形式返回
console.log(stringVal.charAt(0));

//输出"101",返回小写字母"e"的字符编码
console.log(stringVal.charCodeAt(1));

//输出"e",ES5中另一个访问个别字符的方法,方括号加数字索引,IE7会返回undefined
console.log(stringVal[1]);


2.字符串操作方法

concat()
拼接字符串并返回拼接得到的新字符串,实际情况大多使用”+”号拼接;

slice()
substr()
substring()
,这三个方法都返回一个被操作后的新字符串,接受一或两个参数,第一个参数指定开始位置,第二个参数可选,指定结束位置,如果第二个参数没有则默认为到字符串的末尾。

注意:
slice()
substring()
的第二个参数指定的是最后一个字符的位置(结果不包含这个位置的字符),
substr()
的第二个参数指定的是返回的字符个数。如果参数是负值,
slice()
会把传入的值与字符串长度相加;
substr()
会把第一个负参数加上字符串长度,第二个参数转换为0;
substring()
会把两个负参数都转换为0.

var stringVal = "Hi! ";

var greeting = stringVal.concat("welcome","!");
console.log(greeting); //"Hi! welcome!"

var stringValue = "Hello world";
console.log(stringValue.slice(2)); //"llo world"
console.log(stringValue.substring(2)); //"llo world"
console.log(stringValue.substr(2)); //"llo world"

console.log(stringValue.slice(2,7)); //"llo w"
console.log(stringValue.substring(2,7)); //"llo w"
console.log(stringValue.substr(2,7)); //"llo wor"


var stringValue = "Hello world";
console.log(stringValue.slice(-2)); //"ld"
console.log(stringValue.substring(-2)); //"Hello world"
console.log(stringValue.substr(-2)); //"ld"

console.log(stringValue.slice(2,-4)); //"llo w",变成了slice(2,7)
console.log(stringValue.substring(2,-4)); //"He",变成了substring(2,0),相当于substring(0,2)
console.log(stringValue.substr(2,-4)); //""(空字符串),变成了substr(2,0)


3.字符串位置方法

两个从字符串中查找子字符串的方法:
indexOf()
lastIndexOf()
,它们返回字符串的位置,没有找到返回-1,区别:
indexOf()
从字符串开始向后搜索,
lastIndexOf()
从字符串末尾向前搜索。接收第二个参数,表示从字符串的哪个位置开始搜索,
indexOf()
从指定位置向后搜索,
lastIndexOf()
从指定位置向前搜索。

var stringVal = "Hello world";
console.log(stringVal.indexOf("e"));  //输出1
console.log(stringVal.lastIndexOf("e"));  //输出1

console.log(stringVal.indexOf("o"));  //输出4
console.log(stringVal.lastIndexOf("o"));  //输出7

console.log(stringVal.indexOf("o",6));  //输出7
console.log(stringVal.lastIndexOf("o",6));  //输出4


4.trim()方法

trim()
方法会创建一个字符串的副本,删除前置及后缀的所有空格,返回结果。例如:

var stringVal = "  Hello world    ";
var trimString = stringVal.trim();
console.log(trimString);  //输出"Hello world"


5.字符串大小写转换方法

涉及字符串大小转换的方法有四个:
toLowerCase()
toLocalLowerCase()
toUpperCase()
toLocalUpperCase()
其中
toLocalLowerCase()
toLocalUpperCase()
是针对特定地区的实现,少数语言会对Unicode大小写转换应用特定的规则。

var stringVal = "hello world";
console.log(stringVal.toLocalUpperCase()); //输出"HELLO WORLD"
console.log(stringVal.toUpperCase());  //输出"HELLO WORLD"
console.log(stringVal.toLocalLowerCase());  //输出"hello world"
console.log(stringVal.toLowerCase());  //输出"hello world"


6.字符串模式匹配方法

String类型用于字符串模式匹配的方法:
match()
search()
split()


match()
方法接收一个参数,是一个正则表达式或是一个RegExp对象。

var text = "cat,bat,sat,fat";
var pattern = /.at/;
//和pattern.exec(text)相同
var matches = text.match(pattern);
console.log(matches.index, pattern .lastIndex); //输出"0 0"
console.log(matches[0]); //输出"cat"


search()
方法返回字符串中第一个匹配项的索引,若没有找到匹配项,则返回-1。

var text = "cat,bat,sat,fat";
var posit = text.search(/at/);
console.log(posit); //1

var posit2 = text.search(/dat/);
console.log(posit2); //-1

var posit3 = text.search(/fat/);
console.log(posit3); //12


replace()
方法用于替换子字符串,方法接收两个参数,第一个参数可以是一个RegExp对象或一个字符串,第二个参数可以是一个字符串或者一个函数,如果第一个参数是字符串,仅替换第一个字符串:

var text = "cat,bat,sat,fat";
var result = text.replace("a","ha");
console.log(result); /"/chat,bat,sat,fat"

var result2 = text.replace(/a/g,"waha");
console.log(result2); //"cwahat,bwahat,swahat,fwahat"


split()
方法可以以特定分隔符或一个RegExp对象将字符串分割成多个子字符串,结果以数组形式展现。第二个参数可选,用来指定要返回数组的大小。

var colors = "red,blue,yellow,green,black";
var newColors = colors.split(",");
var newColors2 = colors.split(",",3);
var newColors3 = colors.split(/[^\,]+/);
console.log(newColors); //["red", "blue", "yellow","green","black"]
console.log(newColors2); //["red", "blue", "yellow"]
console.log(newColors3); //["", ",", ",", ",", ",", ""]


7.localeCompare()方法

localeCompare()
方法比较两个字符串,返回的值有几种情况:

-字符串在字母表里应排在字符串参数之前的返回一个负数;

-字符串在字母表里应排在字符串参数之后的返回一个正数;

-字符串等于字符串参数的返回0.

var stringVal = "sunshine";
console.log(stringVal.localeCompare("purple")); //1
console.log(stringVal.localeCompare("sunshine")); //0
console.log(stringVal.localeCompare("universe"));  //-1


8.fromCharCode()方法

fromCharCode()
方法接收一或多个字符编码,然后转为一个字符串:

console.log(String.fromCharCode(104,101,108,109,111)); //"helmo"


二、Number类型

Number类型提供了一些把数值格式化为字符串的方法
toFixed()
toExponential()
toPrecision()
,另外Number对象方法
parseFloat()
parseInt()
isFinite()
isInteger()
isNaN()
isSafeInteger()


isFinite()
方法确定一个数值是不是有穷的(是不是位于最大值和最小值之间)

var result = Number.MAX_VALUE+Number.MAX_VALUE;
console.log(isFinite(result)); //false

var result = Number.MIN_VALUE+Number.MAX_VALUE;
console.log(isFinite(result)); //true


isNaN()
方法确定参数是否”不是数值”

console.log(isNaN(NaN)); //true
console.log(isNaN(20)); //false(20是数值)
console.log(isNaN("20")); //false("20"可以被转换成数值)
console.log(isNaN("color")); //true("color"不能转换成数值)
console.log(isNaN(true)); //false(ture可以被转换成数值)


Number()
遵循一定规则把各种数据类型转换为数值:

var num1 = Number("Hello world");  //NaN
var num2 = Number(""); //0
var num3 = Number("000011"); //11
var num4 = Number(false); //0


parseInt()
遵循相应规则把字符串转换为数值,它会忽略字符串前面的空格,直到找到第一个非空字符,第二个参数指定要解析成什么进制格式:

var num1 = parseInt("3421hello");  //3421
var num2 = parseInt(""); //NaN
var num3 = parseInt("0xA"); //10(十六进制)
var num4 = parseInt(23.5); //23
var num5 = parseInt("070"); //56(八进制)
var num6 = parseInt("60"); //60(十进制)


var num1 = parseInt("16",2);  //1
var num2 = parseInt("16",8); //14
var num3 = parseInt("16",10); //16
var num4 = parseInt("16",16); //22
console.log(num1,num2,num3,num4);


parseFloat()
遵循相应规则把字符串转换为数值,第一个小数点有效,第二个无效,它后面的字符串将被忽略,它始终都会忽略前导零:

var num1 = parseFloat("3421hello");  //3421
var num2 = parseFloat(""); //NaN
var num3 = parseFloat("0xA"); //0
var num4 = parseFloat(23.5); //23.5
var num5 = parseFloat("23.45.76"); //23.45
var num6 = parseFloat("3.125e7"); //31250000
console.log(num1,num2,num3,num4,num5,num6);


三、Object类型

hasOwnProperty(propertyName)
:用于检查给定的属性在当前实例中(不是在实例的原型中)是否存在。

var arr = [];
console.log(arr.hasOwnProperty("length"));//true
console.log(arr.hasOwnProperty("hasOwnProperty"));//false


isPrototypeOf(object)
:用于检查传入的对象是否是当前对象的原型。

function Person() {}
var obj = new Person();
console.log(Object.prototype.isPrototypeOf(obj)); //true


propertyIsEnumerable(prototypeName)
:用于检查给定属性是否可以使用for-in语句枚举。

var obj = {
name: "Nicher",
age: 23
}
for (var i in obj) {
console.log(i); //name age
}


toLocalString()
:返回对象的字符串表示,与执行环境的地区对应。

var obj = {};
console.log(obj.toLocaleString());//[object Object]
var date = new Date();
console.log(date.toLocaleString());//2018/3/20 下午3:51:50


toString()
:返回对象的字符串表示。

var obj = {};
console.log(obj.toString());//[object Object]
var date = new Date();
console.log(date.toString());//Tue Mar 20 2018 16:02:31 GMT+0800 (中国标准时间)


valueOf()
:返回对象的字符串、数值、布尔值表示。

var obj = {
name: "Lily",
age: 24
};
console.log(obj.valueOf());//{name: "Lily", age: 24}

var arr = [1,2,3];
console.log(arr.valueOf());//[1, 2, 3]

var date = new Date();
console.log(date.valueOf());//1521533050919


四、Array类型

1.检测数组

Array.isArray()
方法确定某个值到底是不是数组。

var arr1 = [1,2,3];
var arr2 = "Hello";
if (Array.isArray(arr1)) {
//对数组执行的操作
var newArr = arr1.join("-");
console.log(newArr); //1-2-3
}

if (Array.isArray(arr2)) {
//对数组执行的操作
console.log(arr2);
} else {
console.log("Not a array"); //Not a array
}


2.转换方法

所有对象都具有
toLocalString()
toString()
valueOf()
方法,
valueOf()
仍返回数组本身,
toString()
方法返回字符串,由数组中每个值的字符串形式以逗号分隔拼接而成。可以使用
join()
方法使用不同的分隔符来构建这个字符串。

var colors = ["black","white","blue"];
console.log(colors); //["black", "white", "blue"]
console.log(colors.toString());  //black,white,blue
console.log(colors.valueOf());  //["black", "white", "blue"]

console.log(colors.join("-")); //black-white-blue


3.栈方法

push()
方法和
pop()
方法,
push()
方法可以接收任意数量的参数,添加到数组末尾,返回修改后数组的长度,
pop()
方法从数组末尾移除最后一项,返回移除的项。

var colors = [];
var pushed = colors.push("black","white");
console.log(pushed); //2

pushed = colors.push("yellow");
console.log(pushed); //3

pushed = colors.pop();
console.log(pushed); //"yellow"
console.log(pushed.length); //2


4.队列方法

使用
shif()
unshif()
方法可以像使用队列一样使用数组。
shif()
方法能够移除数组中的第一个项并返回该项,同时数组长度减1,
unshift()
方法在数组前端添加任意个项,并返回新数组的长度。

var colors = ["red","green"];
var result = colors.shift();
console.log(result); //"red"

var result2 = colors.unshift("black","white");
console.log(result2);  //3


5.重排序方法

数组中用来排序的方法
reverse()
sort()


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

var arr2 = [1,5,10,15];
arr2.sort();
console.log(arr2);  //[1, 10, 15, 5]


6.操作方法

concat()
方法基于当前数组所有项创建一个新数组副本,返回新构建的数组。

var colors = ["red","blue","pink"];
var colors2 = colors.concat("brown",["black","white"]);
console.log(colors); // ["red", "blue", "pink"]
console.log(colors2); //["red", "blue", "pink", "brown", "black", "white"]


slice()
它能够基于当前数组中的一个或多个项创建一个新数组,接收一或两个参数,即要返回项的始末位置(不包含结束位置的项),第二个参数可选,没有默认到最后一项。如果
slice()
方法中有一个负数,则用数组长度加上这个负数,如果起始位置大于结束位置,则返回空数组。

var colors = ["red","blue","pink","yellow","orange","skyblue"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
var colors4 = colors.slice(-2,-3);
var colors5 = colors.slice(-2,-1);

console.log(colors2);  //["blue", "pink", "yellow", "orange", "skyblue"]
console.log(colors3);  //["blue", "pink", "yellow"]
console.log(colors4); //[]
console.log(colors5); //["orange"]


splice()
方法,主要用途是向数组中部插入项,可以删除,插入,替换

-删除:可以删除任意数量的项,指定两个参数,要删除的第一项的位置和要删除的项数。

-插入:向指定位置插入任意数量的项,提供三个参数:起始位置、要删除的项数(0)以及要插入的项。

-替换:向指定位置插入任意数量的项,同时删除任意数量的项,指定三个参数:起始位置、要删除的项数、要插入的项。

var colors = ["pink","blue","white"];
var removeColors = colors.splice(0,1); //删除第一项
console.log(colors); //["blue", "white"]
console.log(removeColors); //["pink"]

removeColors = colors.splice(1,0,"red","green"); //从位置1开始插入两项
console.log(colors); //["blue", "red", "green", "white"]
console.log(removeColors); //[]

removeColors = colors.splice(1,1,"black","orange");
console.log(colors);  //["blue", "black", "orange", "green", "white"]
console.log(removeColors);  //["red"]


7.位置方法

ES5为数组实例添加了两个位置方法
indexOf()
lastIndexOf()
,它们都接受两个参数:要查找的项和查找起点位置索引。
indexOf()
从数组的开头开始,
lastIndexOf()
从数组的末尾向前查找。在没找到的情况下返回-1.

var numbers = [1,2,3,4,5,4,3,2,1];
console.log(numbers.indexOf(4));  //3
console.log(numbers.lastIndexOf(4));  //5
console.log(numbers.indexOf(4,4));  //
console.log(numbers.lastIndexOf(4,4));  //

var person = {name: "Lily"};
var person2 = [{name: "Ken"}];
var morePeople = [person];

console.log(person2.indexOf(person));  //-1
console.log(morePeople.indexOf(person));  //0


8.迭代方法

数组的5个迭代方法都接收两个参数,要在每一项上运行的函数和运行该函数的作用于对象(可选)。传入的函数接收三个参数:数组项的值、该项在数组中的位置和数组对象本身。

-
every()
:对数组每一项运行给定函数,如果都返回true,则返回true。

-
filter
:对数组每一项运行给定函数,返回该函数会返回true的项组成的数组。

-
foreEach()
:对数组的每一项运行给定函数,该方法无返回值。

-
map()
:对数组每一项运行给定函数,返回每次函数调用的结果组成的数组。

-
some()
:对数组每一项运行给定函数,如果函数任意一项返回true,则返回true。

var arr = [1,2,3,4,5,4,3,2,1];
var everyResult = arr.every((item,index,array) => item>2);
console.log(everyResult);  //false

var someResult = arr.some((item,index,array) => item>2);
console.log(someResult );  //true

var filterResult = arr.filter((item,index,array) => item>2);
console.log(filterResult);  //[3,4,5,4,3]

var mapResult = arr.map((item,index,array) => item*2);
console.log(mapResult);  //[2, 4, 6, 8, 10, 8, 6, 4, 2]

arr.forEach((item,index,array) => {
console.log(index+':'+item);
})


9.归并方法

两个归并数组的方法:
reduce()
reduceRight()
,这两个方法均迭代数组的所有项,方向相反。接收两个参数:在每一项上调用的函数和作为归并基础的初始值(可选)。传入的函数接收4个参数:前一个值,当前值,项的索引和数组对象。这个函数返回的任何值均自动作为第一个参数传给下一项。

var arr = [1,2,3,4,5];
var sum = arr.reduce((prev,cur,index,array) => prev+cur);
console.log(sum);  //15


var arr = [1,2,3,4,5];
var sum = arr.reduceRight((prev,cur,index,array) => prev+cur);
console.log(sum);  //15
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐