Xin chào mọi người, mình đang làm một bài toán nhỏ bằng javascript, mình tìm ra được hướng làm nhưng có vẻ chưa tốt lắm, mong mọi người chỉ cho hướng cải thiện.
Đầu vào: Có 2 mảng, mỗi mảng chứa các chuỗi gồm 3 phần, mỗi phần cách nhau bằng một dấu hai chấm “:” mà phần cuối của chuỗi ấy là một ID.
Đầu ra: xuất ra các ID chỉ có ở mảng thứ nhất và không có trong mảng thứ hai.
Đây là cách mình đang làm:
//Cài đặt mã giả
let array1 = [], array2=[];
for(let i =0; i<10;i++){
let ran1 = Math.floor(Math.random() * 10)+1;
let ran2 = Math.floor(Math.random() * 10)+1;
let ran3 = Math.floor(Math.random() * 10)+1;
let ran4 = Math.floor(Math.random() * 10)+1;
array1.push('Phone:'+ran1+':'+ran2);
array2.push('Samsung:'+ran3+':'+ran4);
}
//Tiến hành duyệt 2 mảng trên, dùng cắt chuỗi lấy ID rồi
//lưu vào mảng listID1 và listID2
let listID1 = [], listID2 = [];
array1.forEach((x)=>{
listID1.push( Number(x.split(':')[2]))
})
array2.forEach((x)=>{
listID2.push(Number(x.split(':')[2]))
})
console.log(listID1)
console.log(listID2)
//Thử cách 1: lọc ra các phần tử trước rồi xuất ra
let test1 = listID1.filter(x=>listID2.indexOf(x)===-1);
test1.forEach((item)=>console.log(item))
//Thử cách 2
for(let item of listID1){
if(listID2.length==0) break;
let index = listID2.indexOf(item);
if(index===-1)
{
console.log(item);
listID2.splice(index,0);
}
}
Mình nghĩ được 2 cách này, mình thấy đoạn lấy ID từ mảng cho trước chưa ổn lắm, mong mọi người giúp đỡ.
Mình xin chân thành cảm ơn.
để tránh
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?