Yêu cầu thg 10 29, 2020 9:56 SA 166 0 1
  • 166 0 1
0

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

Chia sẻ
  • 166 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 CÂU TRẢ LỜI


Đã trả lời thg 10 29, 2020 9:59 SA
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

Chia sẻ
Avatar Do Minh Hoang @hoangdng
thg 10 29, 2020 10:01 SA

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

Avatar Dương Mạnh Hoàng @duong.manh.hoang
thg 10 29, 2020 10:03 SA

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

Avatar Do Minh Hoang @hoangdng
thg 10 29, 2020 10:06 SA

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

Avatar Dương Mạnh Hoàng @duong.manh.hoang
thg 10 29, 2020 10:18 SA

@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);
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí