判断数组arr1中是否包含和数组arr2的FieldName名称一样的,包含返回true,不包含返回false

判断数组arr1中是否包含和数组arr2的FieldName名称一样的,包含返回true,不包含返回false

javascript 复制代码
let arr1 = [
    {index: 0, tableField: {FieldName: date1}}, 
    {index: 1, tableField: {FieldName: date2}},
    {index: 2, tableField: {FieldName: date3}}
  ];
  let arr2 = [
    {FieldName: date1, Selected: true},
    {FieldName: date2, Selected: true},
    {FieldName: date4, Selected: true},
  ]

为了判断数组 arr1 中是否至少有一个元素的 tableField.FieldName 与数组 arr2 中的任意一个 FieldName 相同,你可以使用 Array.prototype.some() 方法结合 Array.prototype.every() 方法来实现。以下是具体的实现步骤和代码示例:

实现步骤:

  1. 遍历 arr1 :对于 arr1 中的每个元素,检查其 tableField.FieldName
  2. 检查 arr2 :对于 arr1 中的每个 tableField.FieldName,检查它是否出现在 arr2 的任何元素的 FieldName 中。
  3. 返回结果 :如果找到至少一个匹配的 FieldName,返回 true;否则,返回 false

代码示例:

javascript 复制代码
let arr1 = [
    { index: 0, tableField: { FieldName: 'date1' } },
    { index: 1, tableField: { FieldName: 'date2' } },
    { index: 2, tableField: { FieldName: 'date3' } }
];

let arr2 = [
    { FieldName: 'date1', Selected: true },
    { FieldName: 'date2', Selected: true },
    { FieldName: 'date4', Selected: true },
];

// 判断 arr1 中是否有元素的 tableField.FieldName 出现在 arr2 的 FieldName 中
let isFieldInArr2 = arr1.some(item => arr2.some(fieldItem => fieldItem.FieldName === item.tableField.FieldName));

console.log(isFieldInArr2); // 输出:true 或 false

解释:

  • arr1.some() 方法检查 arr1 中是否至少有一个元素满足条件。如果找到至少一个,它立即返回 true
  • arr2.some() 方法在 arr1 的每个元素中检查 tableField.FieldName 是否与 arr2 中的任意一个 FieldName 相等。
  • 如果 arr1 中的某个元素的 tableField.FieldNamearr2 中的任意一个 FieldName 相等,isFieldInArr2 将被赋值为 true,否则为 false

这种方法有效地检查了 arr1 中的字段名称是否至少有一个与 arr2 中的字段名称相匹配,并且能够立即停止检查,一旦找到匹配项,提高了效率。

案例:

javascript 复制代码
    let filterSelectedList = params.FieldList.filter(
      (x) => x.Selected
    );
    let resfilter = Outs.value.some((item) =>
      filterSelectedList.some(
        (i) =>
          i.TableName === item.TableField.TableName &&
          i.FieldName === item.TableField.FieldName
      )
    );
    if (resfilter) {
      ElMessage.error('存在重复名称');
      return;
    }
相关推荐
五点六六六11 小时前
基于 AST 与 Proxy沙箱 的局部代码热验证
前端·设计模式·架构
发现一只大呆瓜13 小时前
SSO单点登录:从同域到跨域实战
前端·javascript·面试
发现一只大呆瓜13 小时前
告别登录中断:前端双 Token无感刷新
前端·javascript·面试
Cg1362691597414 小时前
JS-对象-Dom案例
开发语言·前端·javascript
故事和你9114 小时前
sdut-程序设计基础Ⅰ-实验五一维数组(8-13)
开发语言·数据结构·c++·算法·蓝桥杯·图论·类和对象
无限大614 小时前
《AI观,观AI》:善用AI赋能|让AI成为你深耕核心、推进重心的“最强助手”
前端·后端
Jin、yz14 小时前
JAVA 八股
java·开发语言
烛阴14 小时前
Claude Code Skill 从入门到自定义完整教程(Windows 版)
前端·ai编程·claude
我是唐青枫14 小时前
C#.NET Span 深入解析:零拷贝内存切片与高性能实战
开发语言·c#·.net
lxh011315 小时前
数据流的中位数
开发语言·前端·javascript