Asked Oct 29th, 2020 9:56 a.m. 175 0 1
  • 175 0 1
0

[Javascript] Hỏi về cách merge mảng

Share
  • 175 0 1

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 arr1arr2. Đầ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 ANSWERS


Answered Oct 29th, 2020 9:59 a.m.
0

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

Share
Avatar Do Minh Hoang @hoangdng
Oct 29th, 2020 10:01 a.m.

@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 à

0
| Reply
Share
Avatar Dương Mạnh Hoàng @duong.manh.hoang
Oct 29th, 2020 10:03 a.m.

@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ý

0
| Reply
Share
Avatar Do Minh Hoang @hoangdng
Oct 29th, 2020 10:06 a.m.

@duong.manh.hoang Biết thì chỉ mình đi, đừng để ý đến logic cái chổ đó, xin cái keyword nào bạn

0
| Reply
Share
Avatar Dương Mạnh Hoàng @duong.manh.hoang
Oct 29th, 2020 10:18 a.m.

@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);
+1
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.