判断数组arr1中是否包含和数组arr2的FieldName名称一样的,包含返回true,不包含返回false
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() 方法来实现。以下是具体的实现步骤和代码示例:
实现步骤:
- 遍历
arr1:对于arr1中的每个元素,检查其tableField.FieldName。 - 检查
arr2:对于arr1中的每个tableField.FieldName,检查它是否出现在arr2的任何元素的FieldName中。 - 返回结果:如果找到至少一个匹配的
FieldName,返回true;否则,返回false。
代码示例:
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.FieldName与arr2中的任意一个FieldName相等,isFieldInArr2将被赋值为true,否则为false。
这种方法有效地检查了 arr1 中的字段名称是否至少有一个与 arr2 中的字段名称相匹配,并且能够立即停止检查,一旦找到匹配项,提高了效率。
案例:
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;
}


