js语言精粹第8章【方法】

array.concat(item…) 浅复制,不会修改原array

1
2
3
4
5
var a = ['a', 'b', 'c'];
var b = ['x', 'y', 'z'];
var c = a.concat(b, true);
console.log(c); // ["a", "b", "c", "x", "y", "z", true]
console.log(a); // ["a", "b", "c"]

array.join(separator) 返回字符串

1
2
3
var a = ['a', 'b', 'c', 'd'];
console.log(a.join('')); // "abcd"
console.log(a.join('+')); // "a+b+c+d"

array.pop() 移除array中的最后个元素并返回该元素

1
2
3
var a = ['a', 'b', 'c'];
var c = a.pop();
console.log(c); // "c"

array.push(item…) 把item附加到array的尾部,会修改原来的array,并返回新array的长度

1
2
3
4
5
var a = ['a', 'b', 'c'];
var b = ['x', 'y', 'z'];
var c = a.push(b, true);
console.log(a); // ["a", "b", "c", ["x", "y", "z"], true]
console.log(c); // 5

array.reverse() 反转array里元素的顺序,并返回array本身

1
2
3
4
var a = ['a', 'b', 'c'];
var b = a.reverse();
console.log(a); // ["c", "b", "a"]
console.log(b); // ["c", "b", "a"] a和b都是一样的

array.shift() 移除array中的第一个元素并返回该元素,如果array是空的,返回undefined

1
2
3
var a = ['a', 'b', 'c'];
var b = a.shift();
console.log(b); // "a"

array.unshift(item…) 添加一个元素到array的开始部分,返回array的长度

1
2
3
4
var a = ['a', 'b', 'c'];
var b = a.unshift(1, 'd');
console.log(a); // [1, "d", "a", "b", "c"]
console.log(b); // 5

array.slice(start, end) 浅复制[ ),如果start大于array.length,返回一个新的空数组

1
2
3
4
var a = [1, 3, 5, 6, 'a', 'b', 'c'];
console.log(a.slice(8)); // []
console.log(a.slice(1, 5)); // [3, 5, 6, 'a']
console.log(a.slice(-2, 6)); // ['b']

arr.splice(start, deleteCount, item…) 该方法从array中移除一个或多个元素,并用新的item替换它们 start是移除元素的开始位置,deleteCount是要移除的个数,item会插入被移除元素的位置,返回一个包含移除元素的数组, 主要用于删除元素

1
2
3
4
var a = ['a', 1, 'b', 10,'c'];
var r = a.splice(1, 2, 'ache', 'bug');
console.log(a); // ['a', 'ache', 'bug', 10, 'c']
console.log(r); // [1, 'b']

array.sort(comparefn)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var n = ['d', 't', 'q', 'a', 'm'];
var m = [1, 10, 33, 4, 98, 111, 78];
n.sort();
m.sort();
console.log(n); // ["a", "d", "m", "q", "t"]
console.log(m); // [1, 10, 111, 33, 4, 78, 98] 数字无法排序,需借助比较函数
m.sort(function(a, b){
return a-b;
}); // 升序排列
console.log(m); // [1, 4, 10, 33, 78, 98, 111]
m.sort(function(a, b) {
return b-a;
});
console.log(m); // [111, 98, 78, 33, 10, 4, 1]

string.charAt(index) 传入index返回该index的字符串,如果index小于0或者大于string.length,返回一个空字符串

1
2
3
var a = "fancypy";
console.log(a.charAt(0)); // f
console.log(a.charAt(10)); // ""

string.charCodeAt(index) 同上,返回的是该字符的字符码位,index < 0 or index > str.length则返回NaN

1
2
3
var a = "fancypy";
console.log(a.charCodeAt(0)); // 102
console.log(a.charCodeAt(10)); // NaN

string.indexOf(searchString, position) 在str中按从左往右的顺序查找要找到字符,如果找到返回第一个匹配字符的位置,没有找到返回‘-1’,position为可选参数,从指定的位置开始查找

1
2
3
4
5
6
7
8
9
10
11
12
var a = "fancypy";
var b = a.indexOf('y');
var c = a.indexOf('y', 5);
var d = a.indexOf('w');
//str.lastIndexOf()跟str.indexOf()唯一的区别是从末尾开始查找(右往左)
var bb = a.lastIndexOf('y');
var cc = a.lastIndexOf('y', 5);
console.log(b); // 4
console.log(c); // 6
console.log(d); // -1
console.log(bb); // 6
console.log(cc); // 4

sting.localeCompare(that) 类似array.sort比较函数的约定

1
2
3
4
5
var m = ['AAA', 'A', 'aa', 'a', 'Aa', 'aaa'];
m.sort(function(a,b) {
return a.localeCompare(b);
});
console.log(m); //["a", "A", "aa", "Aa", "aaa", "AAA"]

string.split(separator, limit) 按照separator把str分割成片段来创建一个字符串数组,limit为可选参数,表示分割的片段数量

1
2
3
4
5
6
var a = 'fancypy';
console.log(a.split('')); // ["f", "a", "n", "c", "y", "p", "y"]
console.log(a.split('', 3)); // ["f", "a", "n"]
var b = '999-111-33-66';
console.log(b.split('-')); // ["999", "111", "33", "66"]
console.log(b.split('-', 2)); // ["999", "111"]