所有方法都接受两个参数:(fn,ctx);
默认的函数里面ctx是window,现在可以进行指定。
1.forEach 该方法接受一个函数作为参数, 对数组中的每个元素
使用该函数 return 语句失效
2.every 该方法接受一个返回值为布尔类型的函数, 对数组中的每
个元素使用该函数。 如果对于所有的元素, 每一项均返回 true, 则该方法返回 true。 下面
每一项都满足条件 相当于数学上面的&&
是一个例子://可以理解为数学上与的关系。都满足才返回true。
3.some 它相当于数学上的或,有一个满足则返回true否则返回false。 该方法也接受一个返回值为布尔类型的函数, 只要有一个元素使得该函数返回 true,
相当于每一个返回值的||的关系
该方法就返回 true。
4.reduce() 方法接受一个函数, 返回一个值。 该方法会从一个累加值开始, 不断对累加值和
由于第一次迭代时 传入的第一个第二个参数依次是数组里的0 1元素 ,可以手动传入第一个参数
数组中的后续元素调用该函数, 直到数组中的最后一个元素, 最后返回得到的累加值。
reduce() 方法也可以用来将数组中的元素连接成一个长的字符串:
[img]http://dl2.iteye.com/upload/attachment/0122/4481/257e0906-f68a-3f2a-9000-28a1e0ed6f10.png[/img]
reduce的变形 它实质上是对数组里面每一个的值进行相加(乘)运算。
实际业务中会遇见需求:
比如
需要将其中的fruit共同来组成一个以,分隔的字符串
因为在第一次迭代时prev是第一个对象,以后的话,是前面相加的值,故需要进行区分
当然,可能比如下一次是对kind这个字段进行以上运算,所以需要把key提取出来。
这样的话基本上平时的需求都可以完成了
reduceRight() 方法, 和 reduce() 方法不同, 它是从右到左执行.
5.map().两个迭代器方法可以产生新数组: map() 和 filter()。 map() 和 forEach() 有点儿像, 对数组中的每个元素使用某个函数。 两者的区别是 map() 返回一个新的数组, 该数组的元素是对原有元素应用某个函数得到的结果。
6. filter方法,利用指定的函数确定是否在返回的数组中包含值为true的元素
默认的函数里面ctx是window,现在可以进行指定。
1.forEach 该方法接受一个函数作为参数, 对数组中的每个元素
使用该函数 return 语句失效
function square(num) {
print(num, num * num);
}
var nums = [1,2,3,4,5,6,7,8,9,10];
nums.forEach(square);
2.every 该方法接受一个返回值为布尔类型的函数, 对数组中的每
个元素使用该函数。 如果对于所有的元素, 每一项均返回 true, 则该方法返回 true。 下面
每一项都满足条件 相当于数学上面的&&
是一个例子://可以理解为数学上与的关系。都满足才返回true。
function isEven(num) {
return num % 2 == 0;
} v
ar nums = [2,4,6,8,10];
var even = nums.every(isEven);
if (even) {
print("all numbers are even");
} e
lse {
print("not all numbers are even");
}
3.some 它相当于数学上的或,有一个满足则返回true否则返回false。 该方法也接受一个返回值为布尔类型的函数, 只要有一个元素使得该函数返回 true,
相当于每一个返回值的||的关系
该方法就返回 true。
function isEven(num) {
return num % 2 == 0;
}
var nums = [1,2,3,4,5,6,7,8,9,10];
var someEven = nums.some(isEven);
if (someEven) {
print("some numbers are even");
}
else {
print("no numbers are even");
}
4.reduce() 方法接受一个函数, 返回一个值。 该方法会从一个累加值开始, 不断对累加值和
由于第一次迭代时 传入的第一个第二个参数依次是数组里的0 1元素 ,可以手动传入第一个参数
a=[20,10,40];
a.reduce(function(v,m){
console.log(v,m);
return v+m
},30)
第一次是30 ,20
数组中的后续元素调用该函数, 直到数组中的最后一个元素, 最后返回得到的累加值。
function add(runningTotal, currentValue) {
return runningTotal + currentValue;
} v
ar nums = [1,2,3,4,5,6,7,8,9,10];
var sum = nums.reduce(add);
print(sum); // 显示 55
reduce() 方法也可以用来将数组中的元素连接成一个长的字符串:
function concat(accumulatedString, item) {
return accumulatedString + item;
}
var words = ["the ", "quick ","brown ", "fox "];
var sentence = words.reduce(concat);
print(sentence); // 显示 "the quick brown fox"
[img]http://dl2.iteye.com/upload/attachment/0122/4481/257e0906-f68a-3f2a-9000-28a1e0ed6f10.png[/img]
reduce的变形 它实质上是对数组里面每一个的值进行相加(乘)运算。
实际业务中会遇见需求:
比如
arr=[
{fruit:'香蕉',id:2},
{fruit:'草莓',id:3},
{fruit:'橙子',id:4}
]
需要将其中的fruit共同来组成一个以,分隔的字符串
a.reduce(function(prev,curr,ind){
return (ind===1?prev['fruit']: prev)+"," +curr["fruit"]
})
因为在第一次迭代时prev是第一个对象,以后的话,是前面相加的值,故需要进行区分
当然,可能比如下一次是对kind这个字段进行以上运算,所以需要把key提取出来。
function get_str(a,key='kind'){
a.reduce(function(prev,curr,ind){
return (ind===1?prev[key]: prev)+"," +curr[key]
})
}
这样的话基本上平时的需求都可以完成了
reduceRight() 方法, 和 reduce() 方法不同, 它是从右到左执行.
5.map().两个迭代器方法可以产生新数组: map() 和 filter()。 map() 和 forEach() 有点儿像, 对数组中的每个元素使用某个函数。 两者的区别是 map() 返回一个新的数组, 该数组的元素是对原有元素应用某个函数得到的结果。
function curve(grade) {
return grade += 5;
}
var grades = [77, 65, 81, 92, 83];
var newgrades = grades.map(curve);
print(newgrades); // 82, 70, 86, 97, 88
or
function first(word) {
return word[0];
} v
ar words = ["for","your","information"];
var acronym = words.map(first);
print(acronym.join("")); // 显示 "fyi"
6. filter方法,利用指定的函数确定是否在返回的数组中包含值为true的元素