JS测评题(一)

(1)题目描述 计算给定数组 arr 中所有元素的总和
解题思路:(a)直接使用暴力法,循环求和
(b)使用eval和join方法,如a.eval(a.join("+"));
(c)使用forEach方法,var s=0;a.forEach(function(v,i,a){s+=v},0),return s;

(2)题目描述 找出元素 item 在给定数组 arr 中的位置
解思路: 要判断浏览器是否支持indexof,使用if(Array.prototype.indexOf),如果支持则为true,否则使用暴力法循环解决。

(3)题目描述 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组(使用一个新的数组)
解题思路:(a)使用indexOf,使用push求函数
(b)使用filter,如a.filter(function(x){return x!=item})(返回一个新的数组)

(4)题目描述 移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回(在原数组上操作)
解题思路: (a)使用splice方法,但是splice方法会将被删除元素后面的元素前移,所以使用i–

(5)题目描述 在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
解题思路: (a)直接return arr.concat([item]);(concat()方法不会改变原来的数组)
(b)先使用slice(0)复制数组到新数组中,再使用push(item)。

(6)题目描述 删除数组 arr 最后一个元素。不要直接修改数组 arr,结果返回新的数组(使用新数组)
解题思路: (a)先试用slice复制原数组,再使用pop(),一定要注意pop()函数返回的是删除的元素,要使用return arr;才能返回数组
(b)直接使用slice(0,-1)(-1表示从末端开始);或者使用slice(0,arr.length-1);

(7)题目描述 在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组
解题思路: (a)直接使用[item].concat(arr)
(b) 先使用slice复制再使用unshift(item)函数。

(8)题目描述 找出数组 arr 中重复出现过的元素
解题思路: 判断是否有重复的元素使用arr.indexOf(elem)!=arr.lastIndexOf(elem);如下所示
var result = [];
arr.forEach(function(elem){
if(arr.indexOf(elem) !=arr.lastIndexOf(elem) && result.indexOf(elem) == -1){
result.push(elem);
}
});
return result;
}

(9)函数声明和函数表达式的区别:
//函数声明可以使函数的调用在函数之前提前调用
function a() {
console.log(“a”);
}
//函数表达式必须在编译器读取完函数表达式后才能调用函数
var b=function () {
console.log(“b”)
}
也就是说如果函数声明,那么在任何地方都可以是由调用函数
但如果是函数表达式,只能在函数表达式的后面调用函数,不然会报错。

(10)function functions(flag) {
if (flag) {
function getValue() { return ‘a’; }
} else {
function getValue() { return ‘b’; }
}

return getValue();
当flag为true时仍然输出 b,因为else中的语句相当于将if中的function重写,因此无论flag为何值,返回的方法始终为重写后的方法。将方法赋值给一个变量,方法就不会被重写,因此才能得到正确的结果。
所以使用

function functions(flag) {
var getvalue=null;
if (flag) {
getValue = function(){ return ‘a’; }
} else {
getValue = function() { return ‘b’; }
}

return getValue();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值