我试图通过user_id
键合并两个数组对象。我得到的两个数组对象来自state
。
function mapStateToProps(state) {
let {users} = state.users.result;
let {invite} = state.invite.result;
let {friends} = state.friends.result;
if (users && invite && friends) {
let UsersList = mergeArray(users, invite.sent_invites); // Merge Users & Sent Invites
}
function mergeArray(a, b) {
return _.map(a, function(item) {
return _.assign(item, _.find(b, ['user_id', item.user_id]));
});
}
但是,我的{users}
状态也随着合并而变化。为什么是这样?我这几个小时都被困住了。
答案 0 :(得分:1)
_.assign({}, item, _.find(b, ['user_id', item.user_id]));
_.assign
分配给第一个参数,在你的演员阵容中item
,它是对state.users
中对象的引用。因此,您将第一个参数设置为空对象,因此每次都要写入新对象,并且不会修改任何现有对象。