汇总JS迭代方法

为了便于自己记忆,特地在此记录一下关于迭代的方法和包含迭代功能的方法~~

1.every() 和 some()

语法:array.some(function(item,index,array){

                    //item:当前元素的值;

                    //index:当前元素的索引;

                    // array:当前元素的数组对象;

                })

语法:array.every(function(item,index,array){

              //item:当前元素的值;

              //index:当前元素的索引;

              // array:当前元素的数组对象;

               })

every()是对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。

some()是对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。

相似点:every()和some()很相似,他们都用于查询数组中的项是否满足某个条件,

对every()来说,传入的函数必须对每一项都返回true,这个方法才返回true;否则,则返回false。

而some()方法则只要传入的函数对数组中的某一项返回true,就会返回true。

例子:

var numbers=[1,2,3,4,5,4,3,2,1];

  var everyResult=numbers.every(function(item,index,array){

return (item>2);

});

alert(everyResult);//false

var someResult=numbers.some(function(item,index,array){

return (item>2);

});

alert(someResult);//true

2、filter()

filter()是对数组中的每一项运行给定函数,返回该函数会返回true的项所组成的数组。它利用指定的函数确定是否在返回的数组中包含某一项。例如:

var numbers=[1,2,3,4,5,4,3,2,1];

var filterResult=numbers.filter(function(item,index,array){

return (item>2);

});

alter(filterResult); //[3,4,5,4,3];

此例子中,传入的函数要返回一个所有数值都大于2的数组,通过调用filter()方法创建并返回了包含3/4/5/4/3的数组,因为传入的函数对它们的每一项都返回true。这个方法对查询符合某些条件的所有数组项非常有用。

3、map()

map()是对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。这个数组的每一项都是在原始数据中的对应项上运行传入函数的结果,例如:

var numbers=[1,2,3,4,5,4,3,2,1];

  var mapResult=numbers.map(function(item,index,array){

return item*2;

});

alert(mapResult); //[2,4,6,8,10,8,6,4,2]

以上代码返回的数组中包含每个数乘以2之后的结果,这个方法适合创建包含的项与另一个数组一一对应的数组。

4、forEach()

forEach() 是多数组中的每一项运行给定函数,这个方法没有返回值。它只是对数组中的每一项运行传入的函数,没有返回值。本质上与使用for循环迭代数组一样。

var numbers=[1,2,3,4,5,4,3,2,1];

numbers.forEach(function(iterm,index,array){

//执行某些操作

});

以上支持这些迭代方法的浏览器有IE9+、Firfox2+、Safari3+、Opera9.5、Chrome。

5、Object.keys()

可以获取对象的所有属性,该方法返回一个数组

1>传入对象,返回属性名

例如:

var obj1 = { 100: "a", 2: "b", 7: "c"}; console.log(Object.keys(obj1)); // console: ["2", "7", "100"] var obj2 = Object.create({}, { getFoo : { value : function () { return this.foo } } }); obj2.foo = 1; console.log(Object.keys(obj2)); // console: ["foo"]

2>传入字符串,返回索引

var str = 'ab1234'; console.log(Object.keys(obj)); //[0,1,2,3,4,5]

3>构造函数 返回空数组或者属性名

function Pasta(name, age, gender) { this.name = name; this.age = age; this.gender = gender; this.toString = function () { return (this.name + ", " + this.age + ", " + this.gender); } } console.log(Object.keys(Pasta)); //console: [] var spaghetti = new Pasta("Tom", 20, "male"); console.log(Object.keys(spaghetti)); //console: ["name", "age", "gender", "toString"]

4>数组 返回索引

var arr = ["a", "b", "c"]; console.log(Object.keys(arr)); // console: ["0", "1", "2"]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值