判断数组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;
    }
相关推荐
极客小俊5 分钟前
Font Awesome 一个基于CSS和LESS的免费图标库工具包
前端
林开落L10 分钟前
库的制作与原理
linux·开发语言·动静态库·库的制作
yinuo25 分钟前
CSS基础动画keyframes
前端
m0_4805026429 分钟前
Rust 入门 泛型和特征-特征对象 (十四)
开发语言·后端·rust
瓦特what?1 小时前
关于C++的#include的超超超详细讲解
java·开发语言·数据结构·c++·算法·信息可视化·数据挖掘
一条上岸小咸鱼1 小时前
Kotlin 基本数据类型(一):Numbers
android·前端·kotlin
前端小巷子2 小时前
Vue 事件绑定机制
前端·vue.js·面试
祁同伟.2 小时前
【C++】动态内存管理
开发语言·c++
uhakadotcom2 小时前
开源:subdomainpy快速高效的 Python 子域名检测工具
前端·后端·面试
一只鲲2 小时前
40 C++ STL模板库9-容器2-vector
开发语言·c++