求和
//递归
function sum(arr) {
var len = arr.length;
if(len == 0){
return 0;
} else if (len == 1){
return arr[0];
} else {
return arr[0] + sum(arr.slice(1));
}
}
sum([1,2,3,4,5]);
//常规循环:
function sum(arr) {
var s = 0;
for (var i=arr.length-1; i>=0; i--) {
s += arr[i];
}
return s;
}
sum([1,2,3,4,5]);
//函数式编程 map-reduce:
function sum(arr) {
return arr.reduce(function(prev, cur, idx, arr){
return prev + curr;
});
}
sum([1,2,3,4,5]);
//forEach遍历:
function sum(arr) {
var s = 0;
arr.forEach(function(val, idx, arr) {
s += val;
}, 0);
return s;
};
sum([1,2,3,4,5]);
//eval:
function sum(arr) {
return eval(arr.join("+"));
};
sum([1,2,3,4,5]);
去重
方法一:不改变原来数组
function remove(arr,item){
return arr.filter(function(ele){
return ele != item;
})
}
remove([1, 2, 3, 4, 2], 2);
方法二:不改变原来数组
function remove(arr, item) {
a=[];
for(var i=0;i<arr.length;i++){
if(arr[i]!=item){
a.push(arr[i]);
}
}
return a;
}
remove([1, 2, 3, 4, 2], 2);
方法三:改变原来数组
function removeWithoutCopy(arr, item) {
for(var i=0;i<arr.length;i++){
if(arr[i]==item){
arr.splice(i,1);
i--;
}
}
return arr;
}
removeWithoutCopy(([1, 2, 3, 4, 2], 2);
请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。
Array.prototype.distinct = function() {
var ret = [];
for
(var i =
0
; i <
this
.length; i++)
{
for
(var j = i+
1
; j <
this
.length;) {
if
(
this
[i] ===
this
[j]) {
ret.push(
this
.splice(j,
1
)[
0
]);
}
else
{
j++;
}
}
}
return
ret;
}
//for test
alert([
'a'
,
'b'
,
'c'
,
'd'
,
'b'
,
'a'
,
'e'
].distinct());