方法名 | 方法描述 |
concat | 连接两个或更多数组,返回结果 |
every | 对数组中的每一项运行给定的函数,如果该函数对每一项都返回true,则结果返回true |
filter | 对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组 |
forEach | 对数组中的每一项运行给定的函数,没有返回值 |
join | 将所有的数组元素连接成一个字符串 |
indexOf | 返回第一个与给定参数相等的数组元素的索引,没有找到则返回 -1 |
lastIndexOf | 返回在数组中搜索到的与给定参数相等的元素的索引里最大的值 |
map | 对数组中的每一项运行给定的函数,每次返回函数调用结果组成的数组 |
reverse | 颠倒原先数组的顺序,原先第一个元素变成最后一个,最后一个变成第一个 |
slice | 传入索引值,将数组中对应索引范围内的元素作为新数组返回 |
some | 对数组中的每一项运行给定的函数,如果任一项返回了true,则返回true |
sort | 按照字母顺序对数组排序,同时可以传入指定的排序方法的函数作为参数 |
toString | 将数组作为字符串返回 |
valueOf | 将数组作为字符串返回 |
自定义排序:
以上代码片段对对象类型的数组的年龄进行排序
2、字符串排序
let names = ['Ana','ana','john','John'];
console.log(names.sort());
排序结果为:["Ana", "John", "ana", "john"] 。因为JavaScript做字符比较的时候是根据ASCII值来比较的。
栈的模拟:
function Stack() {
let items = [];
this.push = function (element) {
items.push(element);
};
this.pop = function () {
return items.pop();
};
this.peek = function () {
return items[items.length-1]; //返回最后一项
};
this.isEmpty = function () {
return items.length === 0;
};
this.size = function () {
return items.length;
};
this.clear = function () {
items = [];
};
this.print = function () {
console.log(items.toString()); //输出的是从栈底到栈顶
};
}
push方法:每次添加一个新元素到栈顶
pop():移除栈顶元素,同时返回被移除的元素
peek():返回栈顶的元素,不对栈做任何的修改,可以理解为只读的方法
isEmpty():判断栈内是否为空,栈内没有元素返回true,有元素返回false
clear(): 移除栈内的所有元素
size():返回栈内的元素个数。
栈的使用:从十进制数转换成二进制数
function divideBy2(decNumber) {
let remStack = new Stack(),
rem,
binaryString = '';
while(decNumber>0){
rem = Math.floor(decNumber % 2);
remStack.push(rem);
decNumber = Math.floor(decNumber / 2);
}
while(!remStack.isEmpty()){
binaryString += remStack.pop().toString();
}
return binaryString;
}
console.log(divideBy2(23));//10111
console.log(divideBy2(10)); //1010
这个转换方法就是通过十进制数与2整除取余数,压栈,然后通过pop()方法把栈中的元素都移除,把出栈的元素连接成字符串。
十进制转换成任意进制的算法:
function baseConverter(decNumber, base) {
let remStack = new Stack(),
baseString = '',
digits = '0123456789ABCDEF';
while(decNumber > 0){
rem = Math.floor(decNumber % base);
remStack.push(rem);
decNumber = Math.floor(decNumber / base);
}
while(!remStack.isEmpty()){
baseString += digits[remStack.pop()];
}
return baseString;
}
console.log(baseConverter(25536,2)); //110001111000000
console.log(baseConverter(25536,8)); //61700
console.log(baseConverter(25536,16));//63C0
digits 储存余数,进行取余数,压栈、出栈,连成字符串,可以将10进制转换成 16进制以内的其他进制。