ES6 使用 map 和 find 方法在 formList 中添加 required 字段
ES6 使用 map 和 find 方法在 formList 中添加 required 字段
本文介绍如何使用 ES6 中的 map 和 find 方法在 formList 中添加 required 字段,根据 arr1 中 craftSubType 字段的值来判断是否需要添加 required 字段。
问题描述:
给定两个数组:
formList数组包含一些表单字段信息,每个字段包含label、value和type属性。arr1数组包含一些工艺类型信息,每个元素包含craftSubType属性。
需要将 formList 中 type 属性的值与 arr1 中 craftSubType 属性的值进行匹配,如果匹配则在 formList 中对应元素添加 required: true 字段,否则添加 required: false 字段。
解决方案:
可以使用 ES6 中的 map 和 find 方法来实现这个逻辑。
map方法可以遍历formList数组,并对每个元素进行修改。find方法可以查找arr1数组中与当前元素type属性值相匹配的craftSubType值。
代码示例:
const formList = [
{label: '冲压责任人', value: 'stampingUser', type: 1},
{label: '焊接责任人', value: 'weldUser', type: 2},
{label: '机加责任人', value: 'machiningUser', type: 5},
{label: '装配责任人', value: 'assembleUser', type: 6},
{label: '排气责任人', value: 'ventingUser', type: 4},
{label: '电泳责任人', value: 'electrophoresisUser', type: 3}
];
const arr1 = [
{ "craftSubType": "1" },
{ "craftSubType": "2" },
{ "craftSubType": "5" },
{ "craftSubType": "3" },
{ "craftSubType": "3" },
{ "craftSubType": "6" },
{ "craftSubType": "4" },
{ "craftSubType": "4" },
{ "craftSubType": "4" },
{ "craftSubType": "4" },
{ "craftSubType": "4" }
];
const updatedFormList = formList.map(item => {
const match = arr1.find(obj => obj.craftSubType === item.type.toString());
if (match) {
return { ...item, required: true };
} else {
return { ...item, required: false };
}
});
console.log(updatedFormList);
输出结果:
[
{label: '冲压责任人', value: 'stampingUser', type: 1, required: true},
{label: '焊接责任人', value: 'weldUser', type: 2, required: true},
{label: '机加责任人', value: 'machiningUser', type: 5, required: true},
{label: '装配责任人', value: 'assembleUser', type: 6, required: true},
{label: '排气责任人', value: 'ventingUser', type: 4, required: true},
{label: '电泳责任人', value: 'electrophoresisUser', type: 3, required: true}
]
这样就实现了将 formList 中 type 与 arr1 中 craftSubType 相匹配的元素增加 required 字段为 true,否则为 false 的逻辑。
说明:
find方法会返回第一个满足条件的元素,如果没有找到则返回undefined。...item用于将item对象的属性展开,以便在创建新对象时保留原有的属性。
希望本文能够帮助您理解如何使用 ES6 中的 map 和 find 方法来进行数组遍历和查找操作。
原文地址: https://www.cveoy.top/t/topic/m49G 著作权归作者所有。请勿转载和采集!