当前位置:  首页>> 技术小册>> 编程入门课:Javascript从入门到实战

在JavaScript中,我们可以使用迭代和遍历来访问和操作对象和数组中的数据。本文将讨论JavaScript中的一些常见迭代和遍历方法,并结合代码示例进行说明。

对象的迭代和遍历:

for…in语句:用于迭代对象的可枚举属性。

  1. const person = {
  2. name: 'John',
  3. age: 30,
  4. occupation: 'Developer'
  5. };
  6. for(let prop in person) {
  7. console.log(prop, person[prop]);
  8. }
  9. // 'name' 'John'
  10. // 'age' 30
  11. // 'occupation' 'Developer'

Object.keys()方法:返回一个包含对象所有可枚举属性名称的数组。

  1. const person = {
  2. name: 'John',
  3. age: 30,
  4. occupation: 'Developer'
  5. };
  6. const keys = Object.keys(person);
  7. console.log(keys); // ['name', 'age', 'occupation']

Object.values()方法:返回一个包含对象所有可枚举属性值的数组。

  1. const person = {
  2. name: 'John',
  3. age: 30,
  4. occupation: 'Developer'
  5. };
  6. const values = Object.values(person);
  7. console.log(values); // ['John', 30, 'Developer']

Object.entries()方法:返回一个包含对象所有可枚举属性键值对的二维数组。

  1. const person = {
  2. name: 'John',
  3. age: 30,
  4. occupation: 'Developer'
  5. };
  6. const entries = Object.entries(person);
  7. console.log(entries);
  8. // [['name', 'John'], ['age', 30], ['occupation', 'Developer']]

数组的迭代和遍历:

for循环:可以使用for循环来遍历数组中的元素。

  1. const fruits = ['apple', 'banana', 'orange'];
  2. for(let i = 0; i < fruits.length; i++) {
  3. console.log(fruits[i]);
  4. }
  5. // 'apple'
  6. // 'banana'
  7. // 'orange'

forEach()方法:用于遍历数组中的元素,并对每个元素执行指定的函数。

  1. const fruits = ['apple', 'banana', 'orange'];
  2. fruits.forEach(function(fruit) {
  3. console.log(fruit);
  4. });
  5. // 'apple'
  6. // 'banana'
  7. // 'orange'

map()方法:用于创建一个新数组,其中每个元素都是原数组经过指定函数处理后的结果。

  1. const numbers = [1, 2, 3];
  2. const doubledNumbers = numbers.map(function(number) {
  3. return number * 2;
  4. });
  5. console.log(doubledNumbers); // [2, 4, 6]

filter()方法:用于创建一个新数组,其中包含原数组中所有满足指定条件的元素。

  1. const numbers = [1, 2, 3, 4, 5];
  2. const evenNumbers = numbers.filter(function(number) {
  3. return number % 2 === 0;
  4. });
  5. console.log(evenNumbers); // [2, 4]

reduce()方法:用于将数组中的元素归纳为单个值。

  1. const numbers = [1, 2, 3, 4, 5];
  2. const sum = numbers.reduce(function(total, number) {
  3. return total + number;
  4. },
  5. console.log(sum); // 15

find()方法:用于返回数组中第一个满足指定条件的元素。

  1. const people = [
  2. {name: 'John', age: 30},
  3. {name: 'Mary', age: 25},
  4. {name: 'David', age: 40}
  5. ];
  6. const mary = people.find(function(person) {
  7. return person.name === 'Mary';
  8. });
  9. console.log(mary); // {name: 'Mary', age: 25}
  10. findIndex()方法:用于返回数组中第一个满足指定条件的元素的索引。
  11. javascript
  12. Copy code
  13. const people = [
  14. {name: 'John', age: 30},
  15. {name: 'Mary', age: 25},
  16. {name: 'David', age: 40}
  17. ];
  18. const davidIndex = people.findIndex(function(person) {
  19. return person.name === 'David';
  20. });
  21. console.log(davidIndex); // 2

以上是JavaScript中常见的对象和数组迭代和遍历方法。需要注意的是,某些方法返回的是一个新的数组,而某些方法则会修改原始数组。在使用这些方法时,应根据实际需求选择合适的方法并小心使用,以避免出现不必要的错误。

代码示例:下面是一个使用对象和数组迭代和遍历的示例代码,它演示了如何使用for…in、Object.keys()、Object.values()、Object.entries()、for循环、forEach()、map()、filter()、reduce()、find()和findIndex()方法。

  1. const person = {
  2. name: 'John',
  3. age: 30,
  4. occupation: 'Developer'
  5. };
  6. for(let prop in person) {
  7. console.log(prop, person[prop]);
  8. }
  9. // 'name' 'John'
  10. // 'age' 30
  11. // 'occupation' 'Developer'
  12. const keys = Object.keys(person);
  13. console.log(keys); // ['name', 'age', 'occupation']
  14. const values = Object.values(person);
  15. console.log(values); // ['John', 30, 'Developer']
  16. const entries = Object.entries(person);
  17. console.log(entries);
  18. // [['name', 'John'], ['age', 30], ['occupation', 'Developer']]
  19. const fruits = ['apple', 'banana', 'orange'];
  20. for(let i = 0; i < fruits.length; i++) {
  21. console.log(fruits[i]);
  22. }
  23. // 'apple'
  24. // 'banana'
  25. // 'orange'
  26. fruits.forEach(function(fruit) {
  27. console.log(fruit);
  28. });
  29. // 'apple'
  30. // 'banana'
  31. // 'orange'
  32. const numbers = [1, 2, 3];
  33. const doubledNumbers = numbers.map(function(number) {
  34. return number * 2;
  35. });
  36. console.log(doubledNumbers); // [2, 4, 6]
  37. const evenNumbers = numbers.filter(function(number) {
  38. return number % 2 === 0;
  39. });
  40. console.log(evenNumbers); // [2]
  41. const sum = numbers.reduce(function(total, number) {
  42. return total + number;
  43. }, 0);
  44. console.log(sum); // 6
  45. const people = [
  46. {name: 'John', age: 30},
  47. {name: 'Mary', age: 25},
  48. {name: 'David', age: 40}
  49. ];
  50. const mary = people.find(function(person) {
  51. return person.name === 'Mary';
  52. });
  53. console.log(mary); // {name: 'Mary', age

该分类下的相关小册推荐: