[Vue]常见的循环处理数组方法:forEach some map filter every find等方法

[Vue]常见的循环处理数组方法:forEach some map filter every find等方法

Array.forEach(callback)

千万注意:forEach() 方法对于空数组是不会执行回调函数的

forEach()方法用于遍历数组中的每一个元素,并将元素传给回调函数,注意:forEach()中是不支持使用break来中途跳出循环和不支持return操作输出,return只能用于控制循环是否跳出当前循环

语法:

let arr=[1,2,3,4,5,6,7]
arr.forEach((item,index,arr)=>{
    console.log(item,index,arr)
})

输出:
1 0  [1, 2, 3, 4, 5, 6, 7]
2 1  [1, 2, 3, 4, 5, 6, 7]
3 2  [1, 2, 3, 4, 5, 6, 7]
4 3  [1, 2, 3, 4, 5, 6, 7]
5 4  [1, 2, 3, 4, 5, 6, 7]
6 5  [1, 2, 3, 4, 5, 6, 7]
7 6  [1, 2, 3, 4, 5, 6, 7]

回调有三个参数: item:遍历的数组内容 index:对应的数组索引 arr:数组本身

forEach方法是没有返回值的,仅仅是遍历数组中的每一项,不对原来数组进行修改

let arr=[1,2,3,4,5,6,7]
let result = arr.forEach((item,index,arr)=>{
   // 通过item不能改变原数组
   if(item==2){
         item=1
   }
})
console.log('arr:'+arr)
console.log('result:'+result)

输出:
arr:1,2,3,4,5,6,7
result:undefined

但是可以通过数组的索引值来修改原数组的值

let arr=[1,2,3,4,5,6,7]
let result = arr.forEach((item,index,arr)=>{
    // 通过数组索引值来修改原数组的值
    if(item==2){
        arr[index]=20
    }
})
console.log('修改后的arr:'+arr)

输出:
修改后的arr:1,20,3,4,5,6,7

总结:

  1. forEach() 方法对于空数组是不会执行回调函数的

  2. forEach()方法是没有返回值的

  3. 不支持使用break来中途跳出循环和不支持return操作输出,return只能用于控制循环是否跳出当前循环

  4. 可以通过数组的索引值来修改原数组的值

  5. 回调有三个参数:item:遍历的数组元素 index:当前遍历的数组元素的索引值 arr:遍历的数组本身

Array.some(callback)

**some()**是Vue 中的一个常用方法,它接收一个回调函数,回调函数接收三个参数:item当前元素、index当前索引、arr数组本身,注意:当有一个元素满足回调函数的条件时,some方法返回true,否则返回false

some方法找到符合条件的便会终止,否则将会遍历整个数组

注意: some() 不会对空数组进行检测。
注意: some() 不会改变原始数组

语法:

let arr=[1,2,3,4,5,6,7]
arr.some((item,index,arr)=>{
    
})

若数组中的对象只要有一个对象复合条件就返回true , 剩余的元素不会再执行检测,全部对象都不符合条件才返回false

let arr=[
            {
                name:'小红',
                age:28,
            },
            {
                name:'小蓝',
                age:25,
            },
            {
                name:'小绿',
                age:29,
            },
            {
                name:'小白',
                age:27,
            },
        ]
let result = arr.some((item,index,arr)=>{
    return item.age>30
})
console.log(result)


输出:
false
//所有对象都不符合就返回false
let arr=[
            {
                name:'小红',
                age:28,
            },
            {
                name:'小蓝',
                age:25,
            },
            {
                name:'小绿',
                age:29,
            },
            {
                name:'小白',
                age:27,
            },
        ]
let result = arr.some((item,index,arr)=>{
    console.log(item)
    return item.age>28
})
console.log(result)

输出:
{name: '小红', age: 28}
{name: '小蓝', age: 25}
{name: '小绿', age: 29}
true

//当有一个元素满足回调函数条件时,数组就返回true,然后终止遍历,后续元素将不继续遍历,如程序中的小白就没有遍历

总结:

  1. some方法找到符合条件的便会终止,否则将会遍历整个数组

  2. 当数组中有一个元素满足条件即返回true,所有对象都不符合就返回false

Array.every(callback)

every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。

every() 方法使用指定函数检测数组中的所有元素:

  • 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
  • 如果所有元素都满足条件,则返回 true

注意: every() 不会对空数组进行检测。

注意: every() 不会改变原始数组

语法:

let arr=[1,2,3,4,5,6,7]
arr.every((item,index,arr)=>{
    
})

当所有元素都满足条件返回true

let arr=[
            {
                name:'小红',
                age:28,
            },
            {
                name:'小蓝',
                age:25,
            },
            {
                name:'小绿',
                age:29,
            },
            {
                name:'小白',
                age:27,
            },
        ]
let result = arr.every((item,index,arr)=>{
    console.log(item)
    return item.age>20
})
console.log(result)

输出:
true

当检测到有元素不满足时,返回false,循环终止,后续元素不再遍历

let arr=[
            {
                name:'小红',
                age:28,
            },
            {
                name:'小蓝',
                age:25,
            },
            {
                name:'小绿',
                age:29,
            },
            {
                name:'小白',
                age:27,
            },
        ]
let result = arr.every((item,index,arr)=>{
    console.log(item)
    return item.age>26
})
console.log(result)


输出:

age: 28 name: "小红"
age: 25 name: "小蓝"
false

//检测到小蓝不满足条件,所以后续的小白和小绿就没有遍历

总结:

  1. 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
  2. 如果所有元素都满足条件,则返回 true

Array.map(callback)

.map()方法的返回值为新的数组,组中的元素为原始数组元素调用函数处理后的值

map() 按照原始数组元素顺序依次处理元素

注意:

  1. map() 不会对空数组进行检测。
  2. map() 不会改变原始数组。

语法:

let arr=[1,2,3,4,5,6,7]
let newArr = arr.map((item,index,arr)=>{
    
})

.map()方法的返回值为一个新的数组

假设你的数据为:

{
    name: '小红',
    age: 28,
},
{
    name: '小蓝',
    age: 25,
},
{
    name: '小绿',
    age: 29,
},
{
    name: '小白',
    age: 27,
},

但是前端想要使用的数据类型为

{name: '小红'},
{name: '小蓝'},
{name: '小绿'},
{name: '小白'},

这时候就可以用map()方法遍历原数组,返回一个新数组,组中的元素为原始元素调用函数后得到的结果

let arr = [
            {
                name: '小红',
                age: 28,
            },
            {
                name: '小蓝',
                age: 25,
            },
            {
                name: '小绿',
                age: 29,
            },
            {
                name: '小白',
                age: 27,
            },
        ]
let newArr = arr.map((item, index, arr) => {
    return {name:item.name}
})
console.log(newArr)

得到的结果:
在这里插入图片描述

总结:

  1. .map()方法有返回值,返回的是一个新的数组
  2. 遍历原数组的所有元素
  3. 新数组的元素为原始元素调用函数后得到的结果

Array.find(callback)

find() 方法==返回通过测试(函数内判断)的数组的第一个元素的值==

find() 方法为数组中的每个元素都调用一次函数执行:

  • 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
  • 如果没有符合条件的元素返回 undefined

注意:

  1. find() 对于空数组,函数是不会执行的。

  2. find() 并没有改变数组的原始值。

语法:

let arr=[1,2,3,4,5,6,7]
let res = arr.map((item,index,arr)=>{
    
})

假如要选出数组中第一个大于8的数

let arr = [1,0,8,92,3,65,48,2,100]
let result = arr.find((item, index, arr) => {
    return item>8
})
console.log(result)

输出:
92

//返回数组中第一个符合条件的元素,之后的值将不继续遍历

总结:

  1. find()方法返回通过测试(函数内判断)的数组的第一个元素的值
  2. 若数组中无满足条件的元素,则返回undefined
  3. 获取到满足条件的元素后,后续的元素将不继续遍历

Array.filter(callback)

.filter()用于把数组的某些元素的筛选,然后返回剩下的元素

不会改变原数组,返回值是一个新的数组

新数组的数据是满足return条件的原数组数据

语法:

let arr=[1,2,3,4,5,6,7]
let res = arr.filter((item,index,arr)=>{
    
})

假设原数据为

let arr = [1,0,8,92,3,65,48,2,100]

需要提取数组中大于10的数据

let arr = [1,0,8,92,3,65,48,2,100]

let result = arr.filter((item, index, arr) => {
    return item>10
})
console.log(result)


输出:
[92, 65, 48, 100]

总结:

  1. filter()返回值是一个新的数组
  2. 新的数组的元素是满足回调函数条件而筛选出来的原数组元素
  3. 不会改变原数组的数据
.forEach().some().every().map().find().filter()
使用场景没有返回值,可以通过索引修改原函数的数据,遍历所有数据返回值是一个布尔值,找到符合条件的就会终止遍历,否则就遍历整个数组返回值是一个布尔值,找到不符合条件的就停止遍历,否则就遍历整个数组(与some()相反)返回值是一个新的数组,新数组的元素取决于.map()方法的回调函数返回返回通过测试(函数内判断)的数组的第一个元素的值返回值是一个新的数组,新的数组的元素是满足回调函数条件而筛选出来的原数组元素
循环次数数组的长度小于等于数组的长度小于等于数组的长度数组的长度小于等于数组的长度数组的长度
执行结果没有返回值,return只是用来跳过当前循环找到满足条件的就返回true,否则就遍历整个数组返回false找到不满足条件的就返回true,否则就遍历整个数组返回false新数组的数据是.map()callback函数的return返回结果返回的数据是原数组中第一个满足条件的元素,若原数组中的所有元素都不满足,则返回undefined返回一个新数组,数组的元素是满足回调条件的所有原数组数据
  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue框架中,forEach循环一个数组并拿到自己想要的数据的方法有很多种。以下是一些常用的方法: 1. 使用过滤器 Vue中内置的过滤器可以用来筛选数组中的数据。在模板中使用v-for指令遍历数组,然后将需要的数据传递到过滤器中,最终得到想要的数据。例如: ``` <div v-for="item in items" :key="item.id"> {{ item | getSomeData }} </div> ... filters: { getSomeData(item) { return item.someData } } ``` 2. 使用计算属性 计算属性是Vue中一种非常强大的功能,可以对响应式的数据进行处理和计算。在计算属性中,可以通过遍历数组,筛选出需要的数据,并返回它们。例如: ``` <div v-for="item in someData" :key="item.id"> {{ getSomeData(item) }} </div> ... computed: { someData() { // 返回需要遍历的数据 return this.items.filter(item => item.isActive) }, getSomeData() { // 遍历数组并返回需要的数据 return function(item) { return item.someData } } } ``` 3. 使用方法 Vue中也可以通过在方法循环数组并获取自己想要的数据。将数组作为参数传递给方法,然后在方法中遍历数组,最终得到想要的数据。例如: ``` <div v-for="item in items" :key="item.id"> {{ getSomeData(item) }} </div> ... methods: { getSomeData(item) { // 遍历数组并返回需要的数据 return item.someData } } ``` 以上三种方法都可以实现在Vue循环数组并获取自己想要的数据。具体使用哪一种方法取决于具体的需求和场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值