1、Array.prototype.filter()
filter()
方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
这个要注意的是返回值是“一个包含回调函数为其返回true 的所有值的新数组。 如果回调函数为 array1 的所有元素返回false,则新数组的长度为 0。”
过滤数组假值
(真假美猴王)
删除数组中的所有假值。
在JavaScript中,假值有false
、null
、0
、""
、undefined
和 NaN
。
那么对于这题来说,用到Boolean。
对于Boolean,以上所述均为假值,则这题可以这么写:
function bouncer(arr) {
// Don't show a false ID to this bouncer.
function isTureOrNot(element){
var x=Boolean(element);
return x;
}
arr=arr.filter(isTureOrNot);
return arr;
}
bouncer([7, "ate", "", false, 9]);
2、arguments
arguments对象是所有函数中可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数的条目,第一个条目的索引从0开始。例如,如果一个函数传递了三个参数,你可以参考它们如下:
arguments[0]
arguments[1]
arguments[2]
3、slice()
定义和用法
slice() 方法可从已有的数组中返回选定的元素。
语法
arrayObject.slice(start,end)
参数 | 描述 |
---|---|
start | 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。 |
end | 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。 |
返回值
返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
说明
请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
定义和用法
join() 方法用于把数组中的所有元素放入一个字符串。
元素是通过指定的分隔符进行分隔的。
语法
arrayObject.join(separator)
参数 | 描述 |
---|---|
separator | 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。 |
返回值
返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。
5、摧毁数组
金克斯的迫击炮!
实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。
function destroyer(arr) {
// 请把你的代码写在这里
var args=[];
for(var i=0;i<arguments.length;i++){
args.push(arguments[i]);
}
function filtered(ele){
return args.indexOf(ele)<0;
}
arr=arr.filter(filtered);
return arr;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
6、Caesars Cipher
function rot13(str) { // LBH QVQ VG!
// 请把你的代码写在这里
var newString=[];
for(var i=0;i<str.length;i++){
var temp=str.charCodeAt(i);
//A是65,Z是90
if(temp<65||temp>90){
newString.push(str.charAt(i));
continue;
}if(temp>77){
//65+13=78;
newString.push(String.fromCharCode(temp-13));
}else{
newString.push(String.fromCharCode(temp+13));
}
}
return newString.join("");
}
rot13("SERR PBQR PNZC"); // 你可以修改这一行来测试你的代码