const rowData = [];
const arr1 = [{
"bId": "F1.1.4",
"bName": "Mercedes",
"cId": "150494",
"cName": "Benz",
"flag": "Maintain"
},
{
"bId": "F1.1.4",
"bName": "Ford",
"cId": "150744",
"cName": "Mustang",
"flag": "Maintain"
},
{
"bId": "F1.1.4",
"bName": "Volkswagon",
"cId": "4961",
"cName": "Polo",
"flag": "Maintain"
},
{
"bId": "F1.1.5",
"bName": "Isdera",
"cId": "N/A",
"cName": "Isdera",
"flag": "Test"
}
]
const arr2 = [{
"cId": "150494",
"flag": "Decommission"
},
{
"cId": "150744",
"flag": "Invest"
},
{
"cId": "4961",
"flag": "Pending"
}
]
for (let i = 0; i < arr1.length; i++) {
const obj = {
custId: arr1[i].cId,
custName: arr1[i].cName,
bId: arr1[i].bId,
bufName: arr1[i].bName,
impFlag: arr2.filter(({cId}) => cId === arr1[i].cId).map(({flag}) => (flag)).toString()
};
rowData.push(obj);
}
console.log(rowData)
嗨,我正在检查
cId
中的 arr2
是否存在于 arr1
中,并基于此我更新存在 cId 的标志,但对于 arr2 中不存在的其余值,impFlag即将到来 ""
。它应该与 arr1 中的相同。我不知道如何相应地添加条件??
由于
""
是您通过调用 Array.prototype.toString()
获得的唯一falsy 值,因此您可以使用
||
(OR) 运算符在没有匹配标志时提供默认值,例如:
arr2.filter(...).map(...).toString() || arr1[i].flag
上面,当
.toString()
产生假 ""
值时,||
运算符的右侧将用作结果。
const rowData = [];
const arr1 = [{
"bId": "F1.1.4",
"bName": "Mercedes",
"cId": "150494",
"cName": "Benz",
"flag": "Maintain"
},
{
"bId": "F1.1.4",
"bName": "Ford",
"cId": "150744",
"cName": "Mustang",
"flag": "Maintain"
},
{
"bId": "F1.1.4",
"bName": "Volkswagon",
"cId": "4961",
"cName": "Polo",
"flag": "Maintain"
},
{
"bId": "F1.1.5",
"bName": "Isdera",
"cId": "N/A",
"cName": "Isdera",
"flag": "Test"
}
]
const arr2 = [{
"cId": "150494",
"flag": "Decommission"
},
{
"cId": "150744",
"flag": "Invest"
},
{
"cId": "4961",
"flag": "Pending"
}
]
for (let i = 0; i < arr1.length; i++) {
const obj = {
custId: arr1[i].cId,
custName: arr1[i].cName,
bId: arr1[i].bId,
bufName: arr1[i].bName,
impFlag: arr2.filter(({cId}) => cId === arr1[i].cId).map(({flag}) => (flag)).toString() || arr1[i].flag
};
rowData.push(obj);
}
console.log(rowData)