判断数组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()
方法来实现。以下是具体的实现步骤和代码示例:
实现步骤:
- 遍历
arr1
:对于arr1
中的每个元素,检查其tableField.FieldName
。 - 检查
arr2
:对于arr1
中的每个tableField.FieldName
,检查它是否出现在arr2
的任何元素的FieldName
中。 - 返回结果 :如果找到至少一个匹配的
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.FieldName
与arr2
中的任意一个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;
}