[Javascript] Hỏi về cách merge mảng
Chào mọi người mình đang vướng chưa biết cách sử lý merge 2 mảng trong Javascript, mong mọi người giúp đở. Mình xin keyword để search cho trường hợp này với.
Mình có 2 mảng ban đầu như sau:
var arr1 = [
{
id: 10,
name: "Tran Huu Ha",
age: 35,
minTime: 30,
maxTime: 40,
status: false,
},
{
id: 11,
name: "Le Nam Tra",
age: 30,
minTime: 20,
maxTime: 40,
status: true,
},
{
id: 12,
name: "Ngo Duy Nhi",
age: 45,
minTime: 25,
maxTime: 30,
status: false,
}
];
var arr2 = [
{
id: 1,
fullName: "Tran Huu Ha",
age: 35,
time: "20 - 30 min",
active: false,
}
];
Đầu vào là 2 mảng arr1 và arr2. Đầu ra mong muốn là mảng result nhận key của mảng arr2 còn value là từ mảng arr1. Như bên dưới
var result = [
{
id: 10,
fullName: "Tran Huu Ha",
age: 35,
time: "30 - 40 min",
active: false,
},
{
id: 11,
fullName: "Le Nam Tra",
age: 30,
time: "20 - 40 min",
active: true,
},
{
id: 12,
fullName: "Ngo Duy Nhi",
age: 45,
time: "25 - 30 min",
active: false,
}
];
Cảm ơn các bạn
1 CÂU TRẢ LỜI
tại sao khi bạn gộp 2 mảng lại thì ở những obj id 11 và 12 thì lại xuất hiện được thêm các key như là time, active các kiểu vậy. Những giá trị đó bạn lấy từ đâu ra, vì mình thấy arr2 không có, chỉ có của Tran Huu Ha
@duong.manh.hoang Mục đích chính của mình là mảng result nó nhận key của mảng arr2 còn value là từ mảng arr1. Cái này là cố định bạn à
@hoangdng vậy thì tiêu chí gộp của bạn sẽ là gì? full name và name giống nhau? Nếu thế thì mình thấy không hợp lý
@duong.manh.hoang Biết thì chỉ mình đi, đừng để ý đến logic cái chổ đó, xin cái keyword nào bạn
@hoangdng Vậy cứ cho sẽ lấy điều kiện theo cái đó, cái này thì phải tự viết chứ mình nghĩ không có keyword đâu b
var arr1 = [
{
id: 10,
name: "Tran Huu Ha",
age: 35,
minTime: 30,
maxTime: 40,
status: false,
},
{
id: 11,
name: "Le Nam Tra",
age: 30,
minTime: 20,
maxTime: 40,
status: true,
},
{
id: 12,
name: "Ngo Duy Nhi",
age: 45,
minTime: 25,
maxTime: 30,
status: false,
}
];
var arr2 = [
{
id: 1,
fullName: "Tran Huu Ha",
age: 35,
time: "20 - 30 min",
active: false,
}
];
arr1 = arr1.map(item => {
const findInArr2 = arr2.find(itemArr2 => itemArr2.fullName === item.name);
if (findInArr2) {
const newItem = {
id: item.id,
fullName: findInArr2.fullName,
age: findInArr2.age,
time: findInArr2.time,
active: findInArr2.active
}
return newItem;
}
return item;
})
console.log(arr1);