问题:
有些时候,对象数组,在拿到新数据之后,之前的老数据仍需保留,且需要新老数据一起使用,这就需要用到整合,进而使用组合成的数据做列表
思路:
依靠ES5的新方法—forEach,先将一个对象数组变成相同值作为属性,他的内容作为值,类似构成一个新的对象数组,再遍历第二个数组,做判断,是相同的数据那部分整合到一起。
代码:
fix: [
{
type: 1,
name: '完善资料',
},
{
type: 2,
name: '添加企微好友',
},
{
type: 3,
name: '授权登录',
},
{
type: 4,
name: '首次消费',
},
{
type: 5,
name: '授权手机号',
}
],
fix2: [
0: { rule: {type: 1, is_open: 1, value: 2}, user: {is_complete: 0}}
1: {rule: {type: 2, is_open: 1, value: 10}, user: {is_complete: 0}}
2: {rule: {type: 4, is_open: 1, value: 12}, user: {is_complete: 0}}
]
根据彼此相同的type值来进行整合
let fixConfigMap = {}
this.data.fix.forEach(r => {
fixConfigMap[r.type] = r
})
let fixx = []
fix2.forEach(r => {
if (r.rule.type && fixConfigMap[r.rule.type]) {
fixx.push({
name: fixConfigMap[r.rule.type].name,
type: r.rule.type,
rule: r.rule,
user: r.user
})
}
});
结果
fixx: [
{
name: "完善资料"
rule: {type: 1, is_open: 1, value: 2}
type: 1
user: {is_complete: 0}
},
{
name: "添加企微好友"
rule: {type: 2, is_open: 1, value: 10}
type: 2
user: {is_complete: 0}
},
{
name: "首次消费"
rule: {type: 4, is_open: 1, value: 12}
type: 4
user: {is_complete: 0}
}
]