JavaScript》》JS》》ES6》》 foreach 、for in 、for of

在 C# 中,使用 foreach 循环时,不能直接修改值类型的实例。这是因为 foreach 循环的迭代变量是只读的,无法更改其成员。但JS中是可以更改的

foreach

forEach 是数组原型的方法,用于遍历数组元素,无法中断遍历(如使用 break 或 return)。

forEach 方法也是遍历数组的一种方式,它可以用来在每个数组元素上执行一些操作,例如,修改、删除、或执行其他操作等。forEach 方法的语法如下:

javascript 复制代码
//其中,currentValue 为当前遍历到的元素的值,index 为当前遍历到元素的下标,array 为操作的数组
array.forEach(function(currentValue, index, array) {
  // code
});
javascript 复制代码
let arr = [1, 2, 3, 4];

arr.forEach(function(item, index) {
  arr[index] = item * 2;
});

console.log(arr);
// [2, 4, 6, 8]

for of

for of 是 ES6 引入的遍历语法,支持可迭代对象(如数组、字符串、Map、Set),允许使用 break 或 continue 控制流程。

还可以使用解构语法来获取每个元素的完整内容

for...of 方法的语法如下:

javascript 复制代码
for (let [value] of array) {
  // code
}


// 
let arr = [1, 2, 3, 4];

for (let item of arr) {
  console.log(item);
}

//解构
let books = [
  {title: 'JavaScript1', author: 'A'},
  {title: 'JavaScript2', author: 'B'},
  {title: 'JavaScript3', author: 'C'}
];

for (let { title, author } of books) {
  console.log(title + '的作者是' + author);
}

注意:普通对象 {} 默认不是可迭代对象,不能直接使用 for...of。如果要用,可以使用 Object.keys(), Object.values() 或 Object.entries() 先将其转化为数组。

javascript 复制代码
// 对于对象,需要先获取其键、值或条目
const obj = { name: 'Alice', age: 30 };
for (const key of Object.keys(obj)) {
  console.log(key); // 输出:name, age
}
for (const value of Object.values(obj)) {
  console.log(value); // 输出:Alice, 30
}
javascript 复制代码
// 用于数组(不推荐的做法)
const arr = ['a', 'b', 'c'];
arr.customProperty = 'I am custom'; // 给数组添加一个自定义属性

for (const index in arr) {
  console.log(`Index: ${index}, Value: ${arr[index]}`);
}
// 输出:
// Index: 0, Value: a
// Index: 1, Value: b
// Index: 2, Value: c
// Index: customProperty, Value: I am custom (这就是问题所在!)

for in

遍历对象:for in

for in 用于遍历对象的可枚举属性(包括原型链上的属性),通常需要配合 hasOwnProperty 过滤。

javascript 复制代码
const obj = { a: 1, b: 2 };
for (const key in obj) {
  if (obj.hasOwnProperty(key)) {
    console.log(key, obj[key]); // 输出:a 1, b 2
  }
}

数组》》自定义属性

相关推荐
mldong5 小时前
你的 Vue3 项目也能有钉钉同款审批流设计器:npm 装包,10 分钟画出第一条审批流
前端·vue.js
2分钟速写快排5 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
passerby60616 小时前
如何自己造一个时间处理库
前端·javascript·github
走到天涯海角7 小时前
react里面的长列表渲染优化
前端·react.js·前端框架
小羊没烦恼!7 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰7 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
mayaairi9 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen9 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能
风骏时光牛马10 小时前
AI源码分析:拆解模型底层实现逻辑
前端
BillKu10 小时前
全局样式变量:CSS 自定义属性(--border-color)和SCSS 变量($border-color)的说明
javascript·css·scss