Skip to content

[js] 第78天 举例说明数组和对象的迭代方法分别有哪些? #564

@haizhilin2013

Description

@haizhilin2013
Collaborator

第78天 举例说明数组和对象的迭代方法分别有哪些?

Activity

ghost

ghost commented on Jul 2, 2019

@ghost
  • Array
    • forEach method arr.forEach((val, idx, arr) => { ... }, thisArg)
    • for...of (Symbol.iterator) for (let val of arr) { ... }
    • for...in (Enumerable Keys) for (let key in arr) { ... }
  • Object
    • for...in (Enumerable Keys) for (let key in obj) { ... }
    • Object static method + for...of
      • for (let key of Object.keys(obj)) { ... }
      • for (let [key, val] of Object.entries(obj)) { ... }
dropSence

dropSence commented on Jul 3, 2019

@dropSence

ES5中为数组定义了5个迭代方法。每个方法都要接收两个参数:要在每一项上面运行的函数和(可选的)运行该函数的作用域对象---影响this的值。
1.every()和some();
every():对数组中的每一项运行给定函数,如果每一项都返回true,则返回true,否则false;
some():对数组中的每一项运行给定函数,如果至少有一项返回true,则返回true,否则false;
2.map()和filter();
filter():对数组中的每一项给定函数,返回值为true的项重新组成新的数组;
map():岁数组中的每一项给定函数,返回每一项调用这个函数的结果;
3.forEach();
forEach():对方法中的每一项运行给定函数。这个方法没有返回值;
迭代对象:
用for-in遍历对象
用for-of遍历类数组对象(ES6)
用Object.keys()获取对象属性名的集合

Konata9

Konata9 commented on Jul 3, 2019

@Konata9
  • array:
  1. forEach((item, index)):无返回值,不可中断
  2. map((item,index)):map 不会修改原数组,返回一个新的数组。如果忘记写 return 就会返回 undefined
  3. filter((item,index)): filter 根据输入的条件将返回值为 true 的项重新组成数组返回出去
  4. some((item, index))/every((item, index)):都是对输入的条件进行判断,some 只要有一个满足就返回 true; every 是需要所有项都满足才返回 true
  5. reduce((prev,cur, index))/reduceRight((prev, cur, index)):允许我们对数组前一项和当前项进行操作,自定义返回值类型
  • object
  • 自己用的比较多的是 Object.keys(obj) 转为数组后在进行遍历
  1. for-in
tongshoutongjiao

tongshoutongjiao commented on Jul 3, 2019

@tongshoutongjiao

array
forEach 遍历数组每一项,没有返回值
map 数组每一项的映射,所有的返回值组成一个新的数组
some 其中一个的意思,遍历数组中的每一项,有一个值返回为true ,则结果为true,否则为false
every 数组中的每一项都返回true,最终结果为true,否则为false
reduce 汇总的意思,里面三个参数,(prev, cur,start ) 将数组中的所有数据进行迭代,返回最终的结果
object
用的最多的就是for in
还知道 for of
以及 Object .keys();

maczyt

maczyt commented on Jul 3, 2019

@maczyt

Array

  1. for of
for (let value of arr) {}
  1. for in
for (let index in arr) {}
  1. for
  2. forEach 不过forEach遍历不能通过return结束遍历
  3. some
arr.some(item => {
  if (item == '终止条件') return true;
});
  1. every
arr.every(item => {
  if (item == '终止条件') return false;
  return true;
})
  1. mapreduce

Object

  1. for in

转成数组后使用数组遍历方法遍历

  1. Object.keys
  2. Object.values
  3. Object.getOwnPropertyNames
xujunBachlor

xujunBachlor commented on Jul 3, 2019

@xujunBachlor

数组和对象的迭代方法现在一般只用es6里面的语法了
数组: arr.forEach((x,index) => {})
arr.map((x,index) => {})
arr.find(x => {}) 这个保持条件一直为假的话也可以用来迭代数组
arr.findIndex(x => {}) 同理,这个也是一样的
对象: Object.keys(obj) 获取键值,然后遍历键值来遍历数组
Object,values(obj) 直接获取到对象所有的value值
Object.entries(obj) 获取到对象的键值对数组,然后遍历数组就能遍历对象了

jiamianmao

jiamianmao commented on Aug 12, 2019

@jiamianmao

说一些能想到的知识点吧,感觉贤弟们说的不太全。
Array:
ES5
for;for-in;forEach(注意和for的区别,return 以及 async await 的情况下);some;map;every;filter;reduce;reduceRight;
ES6+
find;findIndex;for-of;

Object:
ES5
Object.keys;for-in;
ES6+
Object.values;Object.entries;
看其他答主知道的: getOwnPropertyNames

smile-2008

smile-2008 commented on Jan 28, 2021

@smile-2008

说一些能想到的知识点吧,感觉贤弟们说的不太全。
Array:
ES5
for;for-in;forEach(注意和for的区别,return 以及 async await 的情况下);some;map;every;filter;reduce;reduceRight;
ES6+
find;findIndex;for-of;

Object:
ES5
Object.keys;for-in;
ES6+
Object.values;Object.entries;
看其他答主知道的: getOwnPropertyNames

xiaoqiangz

xiaoqiangz commented on Jun 21, 2022

@xiaoqiangz

Array: for、for in、for of、some、filter、every、reduce、find、forEach、map
Object:for in、Object.keys()、Object.entries()、Object.values()、Object.getOwnPropertyNames()

maczyt

maczyt commented on Oct 11, 2022

@maczyt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    jsJavaScript

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @smile-2008@haizhilin2013@Konata9@maczyt@xiaoqiangz

        Issue actions

          [js] 第78天 举例说明数组和对象的迭代方法分别有哪些? · Issue #564 · haizlin/fe-interview