Vue3基础篇之常用的循环示例详解

 更新时间:2024年01月06日 10:53:51   作者:黑日里不灭的light  
filter 方法会创建一个新的数组,其中包含满足指定条件的所有元素,这个方法非常适合循环遍历数组并根据特定条件过滤元素的情况,这篇文章主要介绍了Vue3基础[常用的循环],需要的朋友可以参考下

一、循环

1. filter

解释:filter 方法会创建一个新的数组,其中包含满足指定条件的所有元素。这个方法非常适合循环遍历数组并根据特定条件过滤元素的情况。例如,可以使用 filter 方法来找出数组中所有大于特定值的元素,或者找出包含特定关键词的字符串

复杂写法:

const list = reactive({ list: [] })
list.list = [
  { id: 1, name: 'jack', is_use: false },
  { id: 2, name: 'jacker', is_use: true }
]
for (let i = 0; i < list.list.length; i++) {
  if (list.list[i].is_use) {
    console.log(list.list[i].name)
  }
}

简单写法:

const plist = list.list.filter((i) => {
  return i.is_use
})

复杂例子:

  • 出版年份在2010年以后。
  • 页数在300到600之间,适中长度的书籍。
  • 价格低于或等于25美元。
const books = [
  { title: 'Book A', pages: 90, price: 10.99, releaseYear: 2016 },
  { title: 'Book B', pages: 320, price: 18.99, releaseYear: 2011 },
  { title: 'Book C', pages: 250, price: 29.99, releaseYear: 2013 },
  { title: 'Book D', pages: 450, price: 24.99, releaseYear: 2009 },
  { title: 'Book E', pages: 650, price: 35.99, releaseYear: 2001 },
  { title: 'Book F', pages: 370, price: 22.99, releaseYear: 2014 },
  { title: 'Book G', pages: 520, price: 27.99, releaseYear: 2017 }
];
const filteredBooks = books.filter(book => {
  // 筛选条件1: 出版年份在2010年以后
  const isRecent = book.releaseYear > 2010;
  // 筛选条件2: 页数在300到600之间
  const isModerateLength = book.pages >= 300 && book.pages <= 600;
  // 筛选条件3: 价格低于或等于25美元
  const isAffordable = book.price <= 25;
  // 只有同时满足所有条件的书籍被返回
  return isRecent && isModerateLength && isAffordable;
});
console.log(filteredBooks);

2. map

解释:map 方法是 Array 对象的一个非常强大的函数式编程工具。它按照原始数组的顺序,对每个元素应用一个函数,并将结果收集到一个新数组中。它非常适合于执行数据转换和应用操作到数组里的每一个项目,而不会改变原始的数组。

例一:将数组中的每个数字乘以2

const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(number => number * 2);
console.log(doubled);  // [2, 4, 6, 8, 10]

例二:从对象数组中提取特定的属性值

const users = [
  { name: 'Alice', age: 22 },
  { name: 'Bob', age: 24 },
  { name: 'Charlie', age: 28 }
];
const names = users.map(user => user.name);
console.log(names);  // ['Alice', 'Bob', 'Charlie']

例三:对数组里面的数组进行操作

const arrays = [[1, 2], [3, 4], [5, 6]];
const flattened = arrays.map(pair => pair[0] + pair[1]);
console.log(flattened);  // [3, 7, 11]

复杂例子:

  • 添加一个新的属性readable,如果书本的页数少于300页,标记为’Quick read’;如果在300到600页之间,标记为’Moderate read’;超过600页的,标记为’Long read’。
  • 把作者的名字和姓氏合并成一个fullName属性。
  • 添加一个新的属性discountPrice,如果书本的发布年份在5年之前,则价格打9折。
const books = [
  { title: 'Book A', author: { firstName: 'John', lastName: 'Doe' }, pages: 150, price: 19.99, releaseYear: 2020 },
  { title: 'Book B', author: { firstName: 'Jane', lastName: 'Smith' }, pages: 450, price: 24.99, releaseYear: 2018 },
  { title: 'Book C', author: { firstName: 'Emily', lastName: 'Jones' }, pages: 700, price: 29.99, releaseYear: 2015 }
];
const transformedBooks = books.map(book => {
  // 复杂逻辑在这里
  let readable;
  if (book.pages < 300) {
    readable = 'Quick read';
  } else if (book.pages >= 300 && book.pages <= 600) {
    readable = 'Moderate read';
  } else {
    readable = 'Long read';
  }
  const fullName = `${book.author.firstName} ${book.author.lastName}`;
  const currentYear = new Date().getFullYear();
  const discountPrice = currentYear - book.releaseYear > 5 ? book.price * 0.9 : book.price;
// ...用于展开对象的属性(相当于写在这里)
  return {
    ...book,
    readable,
    author: { ...book.author, fullName },
    discountPrice: parseFloat(discountPrice.toFixed(2)) // ensures the price is formatted to 2 decimal places
  };
});
console.log(transformedBooks);

3. for…of…

解释:打印每一项,常用于打印数组

const books = [1, 2, 3]
for (const i of books) {
  console.log(i)
}
// 1
// 2
// 3

4. for…in…

解释:打印每一项的键或下标(在数组里面是下标),常用于打印对象

const books = { id: 1, pname: 2 }
for (const i in books) {
  console.log(`${i}:${books[i]}`)
}
// id: 1
// pname: 2

5. forEach

解释:简化版的for循环,但是只是适用于数组

const books = [1, 2]
books.forEach((element) => {
  console.log(element)
})
// 1
// 2

到此这篇关于Vue3基础[常用的循环]的文章就介绍到这了,更多相关Vue3 常用的循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue多页面配置打包性能优化方式(解决加载包太大加载慢问题)

    Vue多页面配置打包性能优化方式(解决加载包太大加载慢问题)

    这篇文章主要介绍了Vue多页面配置打包性能优化方式(解决加载包太大加载慢问题),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • vue实现侧边栏导航效果

    vue实现侧边栏导航效果

    这篇文章主要为大家详细介绍了vue实现侧边栏导航效果,右侧显示对应内容,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Vue或者React项目配置@路径别名及智能提示方案

    Vue或者React项目配置@路径别名及智能提示方案

    这篇文章主要介绍了Vue或者React项目配置@路径别名及智能提示方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue实现购物车小案例

    vue实现购物车小案例

    这篇文章主要为大家详细介绍了vue实现购物车小案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • vue中关于v-for循环key值问题的研究

    vue中关于v-for循环key值问题的研究

    这篇文章主要介绍了vue中关于v-for循环key值问题的研究,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • vue封装TabBar组件的完整步骤记录

    vue封装TabBar组件的完整步骤记录

    组件封装是为了复用,换成大白话就是,同样的事情我不想做第二遍,节省出来的时间用来看动漫不香吗,下面这篇文章主要给大家介绍了关于vue封装TabBar组件的完整步骤,需要的朋友可以参考下
    2021-10-10
  • Vue3 之 Vue 事件处理指南

    Vue3 之 Vue 事件处理指南

    Vue事件处理是每个Vue项目的必要方面。 它用于捕获用户输入,共享数据以及许多其他创造性方式。在本文中,会介绍基础知识,并提供一些用于处理事件的代码示例。需要的小伙伴可以参考下面文章的具体内容
    2021-09-09
  • Vue3 实现验证码倒计时功能(刷新保持状态)

    Vue3 实现验证码倒计时功能(刷新保持状态)

    倒计时的运用场景是需要经常用到的,但是根据业务的不同,好比手机验证码或者是邮箱验证码之类的,即使用户跳转到其它页面或者刷新,再次回到登录也,验证码的倒计时也得保持状态,下面通过本文给大家分享Vue3 验证码倒计时功能实现,感兴趣的朋友一起看看吧
    2022-08-08
  • Vite+Vue3使用MockJS的实现示例

    Vite+Vue3使用MockJS的实现示例

    写一些纯前端的项目时,自己造数据有些麻烦,于是我们可以利用mock造一些简单的数据,来满足我们的需求,本文主要介绍了Vite+Vue3使用MockJS的实现示例,感兴趣的可以了解一下
    2024-01-01
  • vue使用Vuex状态管理模式

    vue使用Vuex状态管理模式

    这篇文章介绍了vue使用Vuex状态管理模式的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04

最新评论