js各种实际场景的使用案例合集(全)

1、两个数组的交集

场景1:找出两个数组arr1的activityProdId值存在在arr2中,如果存在则放入新数组arr3中

场景条件

arr1=[

        { activityProdId:23, name:"06", },

        { activityProdId:56, name:"07", },

        { activityProdId:78, name:"08", }

]

arr2=[26,23,34,3,8,78,4,7,75]

场景结果

arr3=[23,78]

代码示例

let arr1 = [  
  {  
    activityProdId: 23,  
    name: "06",  
  },  
  {  
    activityProdId: 56,  
    name: "07",  
  },  
  {  
    activityProdId: 78,  
    name: "08",  
  },  
];  
  
let arr2 = [26, 23, 34, 3, 8, 78, 4, 7, 75];  
let arr3 = [];  
  
// 遍历arr1  
arr1.forEach(item => {  
  // 检查arr2是否包含当前元素的activityProdId  
  if (arr2.includes(item.activityProdId)) {  
    // 如果包含,则将该activityProdId添加到arr3中  
    arr3.push(item.activityProdId);  
  }  
});  
  
console.log(arr3); // 输出: [23, 78]

场景2遍历checkGroup数组,当值存在与allTagsList数组的任何一个对象的属性name值一样时,则将值对应的对象属性tagId值存入一个新数组arr中

场景条件

allTagsList = [

        { name:'dfbg', tagId:456, },

        { name:'bn', tagId:75, },

        { name:'nh', tagId:76, }

]

checkGroup = ['nh','dfbg']

场景结果arr = [76,456]

代码示例

let allTagsList = [  
    {  
        name: 'dfbg',  
        tagId: 456,  
    },  
    {  
        name: 'bn',  
        tagId: 75,  
    },  
    {  
        name: 'nh',  
        tagId: 76,  
    },  
];  
  
let checkGroup = ['nh', 'dfbg'];  
  
// 使用 filter() 和 some() 来实现  
let arr = allTagsList.filter(item => 
    checkGroup.some(name => item.name === name)
).map(item => item.tagId);  
  
console.log(arr); // 输出: [76, 456]

方法解析

  • filter()方法:用于创建一个新数组,测试 allTagsList 中的每个对象,是否满足某个条件
  • some()方法:检查 filter() 中的每个对象与 checkGroup 数组中是否至少有一个元素与当前对象的name属性相等。如果some()返回true(即至少找到一个匹配的name),则 filter() 会保留这个对象
  • map()方法:遍历 filter() 返回的数组,并提取每个对象的 tagId 属性,放入一个新的数组arr

2、递归遍历数组,对指定层级对象进行特定操作

场景1:深度遍历arr数组,当存在对象depth属性的值为3时,立即return出去

场景条件

arr=[

        { id:1, depth:1, children:[ { depth:2, children:null }, { depth:2, children:{ depth:3, children:null } }, ] },

        { id:2 depth:1, children:[ { depth:2, children:{ depth:3, children:null }, }, { depth:2, children:null }, ] }

]

代码示例

function findDepthThree(arr) {  
  for (let item of arr) {  
    if (item.depth === 3) {  
      return true; // 立即返回true,因为找到了depth为3的对象  
    }  
    if (item.children && Array.isArray(item.children)) {  
      // 递归检查children数组中的每个元素  
      if (findDepthThree(item.children)) {  
        return true; // 如果在children中找到了depth为3的对象,则立即返回true  
      }  
    }  
  }  
  return false; // 如果没有找到depth为3的对象,则返回false  
}  
  
// 示例数组  
const arr = [  
  {  
    id: 1,  
    depth: 1,  
    children: [  
      { depth: 2, children: null },  
      {  
        depth: 2,  
        children: [
          {
            depth: 3,  
            children: null  
          }
        ]
      },  
    ]  
  },  
  {  
    id: 2, // 注意:这里缺少了一个逗号  
    depth: 1,  
    children: [  
      {  
        depth: 2,  
        children: [{  
          depth: 3,  
          children: null  
        }],  
      },  
      { depth: 2, children: null },  
    ]  
  },  
];  
// 调用函数  
console.log(findDepthThree(arr));//true

场景2遍历arr数组,将depth属性值为2的对象的id等于指定变量ids1的对象插入新数组newArr2;将depth属性值为3的对象id等于指定变量ids2的对象插入新数组newArr3

场景条件

arr=[

{ name:'sfvg&

  • 22
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue.js 是一种流行的 JavaScript 前端框架,用于构建交互式的单页面应用程序 (SPA)。它以简洁、易用和灵活的特点而受到开发者的喜爱。下面是关于 Vue.js 的简要介绍、使用场景案例: 1. 简要介绍:Vue.js 是一个渐进式框架,它通过使用组件化开发和响应式数据绑定的方式,使构建交互式前端应用程序更加简单和高效。Vue.js 的核心库非常轻量级,可以逐步引入其他功能模块,例如路由、状态管理等,以满足不同项目的需求。 2. 使用场景:Vue.js 适用于各种前端开发场景,包括单页面应用程序 (SPA)、多页面应用程序、移动应用程序、桌面应用程序等。由于 Vue.js 的易用性和灵活性,它被广泛用于构建各种规模的项目,从小型个人网站到大型企业级应用程序。 3. 案例:以下是一些使用 Vue.js 的著名案例实际应用场景: - Alibaba(阿里巴巴):Vue.js 在阿里巴巴旗下的一些项目中得到广泛应用,如支付宝、淘宝等。 - Xiaomi(小米):小米的官方网站和一些移动应用程序中使用了 Vue.js。 - Bilibili(哔哩哔哩):Vue.js 是 Bilibili 弹幕视频网站的核心技术之一。 - GitLab:GitLab 是一个基于 Vue.js 构建的开源代码托管平台。 - Laravel:Laravel 是一个流行的 PHP Web 开发框架,它的后台管理界面使用了 Vue.js。 这些案例展示了 Vue.js 在不同领域和项目中的广泛应用。通过其简洁的语法和丰富的功能,Vue.js 提供了一种高效、灵活和可维护的前端开发方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五秒法则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值