作者:yanyige | 发布时间:2017-04-22 10:25
题目描述
计算给定数组 arr 中所有元素的总和
输入描述: 数组中的元素均为 Number 类型
input: sum([ 1, 2, 3, 4 ])
output: 10
function sum(arr) {
return arr.reduce(function(prev, curr, index, arr) {
return prev + curr;
});
};
题目描述
找出元素 item 在给定数组 arr 中的位置
输入描述: 如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1
input: indexOf([ 1, 2, 3, 4 ], 3)
output: 2
function indexOf(arr, item) {
return(arr.indexOf(item));
}
题目描述
移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组
input: remove([1, 2, 3, 4, 2], 2)
output: [1, 3, 4]
function remove(arr, item) {
return arr.filter(function(x) { return x !== item; });
}
题目描述
移除数组 arr 中的所有值与item相等的元素,直接在给定的arr数组上进行操作,并将结果返回
removeWithoutCopy([1, 2, 2, 3, 4, 2, 2], 2)
[1, 3, 4]
function removeWithoutCopy(arr, item) {
for(var i = 0; i < arr.length; i ++) {
if(arr[i] == item) {
arr.splice(i, 1);
i --;
}
}
return arr;
}
题目描述
在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组
prepend([1, 2, 3, 4], 10)
[10, 1, 2, 3, 4]
function prepend(arr, item) {
var _arr = arr.slice(0);
return _arr.unshift(item), _arr;
}
//利用concat
function prepend(arr, item) {
return [item].concat(arr);
}
//使用push.apply
function prepend(arr, item) {
var newArr=[item];
[].push.apply(newArr, arr);
return newArr;
}
//利用slice+unshift/splice
function prepend(arr, item) {
var newArr=arr.slice(0);
newArr.unshift(item);//newArr.splice(0,0,item);
return newArr;
}
//使用join+split+unshift/splice组合
function prepend(arr, item) {
var newArr=arr.join().split(',');
newArr.unshift(item);//newArr.splice(0,0,item);
return newArr;
}
//普通的迭代拷贝
function prepend(arr, item) {
var newArr=[];
for(var i=0;i<arr.length;i++){
newArr.push(arr[i]);
}
newArr.unshift(item);
return newArr;
}
题目描述
找出数组 arr 中重复出现过的元素
duplicates([1, 2, 4, 4, 3, 3, 1, 5, 3]).sort()
[1, 3, 4]
function duplicates(arr) {
var ret = [];
arr.sort();
arr.map(function(item, idx, arr) {
if(arr.indexOf(item) != arr.lastIndexOf(item) && ret.indexOf(item) == -1) {
ret.push(item);
}
});
return ret;
}
题目描述
在数组 arr 中,查找值与 item 相等的元素出现的所有位置
findAllOccurrences(‘abcdefabc’.split(‘’), ‘a’).sort()
[0, 6]
function findAllOccurrences(arr, target) {
var _arr = arr.map(function(item, index) {
return item == target ? index : -1;
})
return _arr.join('').replace(/-1/g, "").split("");
}
题目描述
请修复给定的 js 代码中,函数定义存在的问题
functions(true)
a
function functions(flag) {
var getValue;
if (flag) {
getValue = function() { return 'a'; }
} else {
getValue = function() { return 'b'; }
}
return getValue();
}
题目描述
实现一个打点计时器,要求
- 从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log一个数字,每次数字增幅为 1
- 返回的对象中需要包含一个 cancel 方法,用于停止定时操作
- 第一个数需要立即输出
function count(start, end) {
console.log(start ++);
var timer = setInterval(function() {
if(start >= end) {
clearInterval(timer);
}
console.log(start ++);
}, 100);
return {
cancel : function() {clearInterval(timer);}
}
}