const cafes = [
{
name: "Bazaar Cafe",
place_id: "kjk234g4gcvfx8usg1l33pi",
},
{
name: "Ashley's Cafe",
place_id: "12hydbdf76sljfts87sbfis",
},
{
name: "Avenue Cafe",
place_id: "skjd86svvfdrsv55svbvf3f",
},
{
name: "Hi-Lo Cafe",
place_id: "mjdhgetr4pojfyts22fzfsh",
},
{
name: "California Chicken Cafe",
place_id: "12hydbdf76sljfts87sbfis",
},
{
name: "Avenue Bakery Cafe",
place_id: "jahgde7wgdiau8ewsahgosd",
},
{
name: "Philz Coffee",
place_id: "urhw3837ehalod7w02b7835",
},
];
const places = [
{
id: "jahgde7wgdiau8ewsahgosd",
street_no: "60H",
locality: "Solomos Island Road",
postal_code: "20688",
lat: "36.7783 N",
long: "119.4179 W",
},
{
id: "12hydbdf76sljfts87sbfis",
street_no: "1B",
locality: "Macarthur Blvd",
postal_code: "20619",
lat: "38.1781 N",
long: "118.4171 W",
},
{
id: "kjk234g4gcvfx8usg1l33pi",
street_no: "45250",
locality: "Worth Avenue, Unit A",
postal_code: "20619",
lat: "36.1152",
long: "117.521",
},
{
id: "saswe3s6yydtdr52hsd72yst",
street_no: "1X",
locality: "Macarthur Blvd",
postal_code: "20687",
lat: "36.7783",
long: "119.4179",
},
{
id: "skjd86svvfdrsv55svbvf3f",
street_no: "7S",
locality: "Three Notch Road",
postal_code: "20619",
lat: "36.83",
long: "119.6",
},
{
id: "mjdhgetr4pojfyts22fzfsh",
street_no: "22803",
locality: "Gunston Dr Lexington Park",
postal_code: "20688",
lat: "35.7788",
long: "119.979",
},
{
id: "urhw3837ehalod7w02b7835",
street_no: "225",
locality: "Macarthur Blvd",
postal_code: "20687",
lat: "35.77813",
long: "119.41791",
},
];
我希望最终的组合数组如下 -
finalArr = [
{
id: "kjk234g4gcvfx8usg1l33pi",
street_no: "45250",
locality: "Worth Avenue, Unit A",
postal_code: "20619",
lat: "36.1152",
long: "117.521",
name: "Bazaar Cafe"
},
{
id: "12hydbdf76sljfts87sbfis",
street_no: "1B",
locality: "Macarthur Blvd",
postal_code: "20619",
lat: "38.1781 N",
long: "118.4171 W",
name: "Ashley's Cafe"
},
{
id: "12hydbdf76sljfts87sbfis",
street_no: "1B",
locality: "Macarthur Blvd",
postal_code: "20619",
lat: "38.1781 N",
long: "118.4171 W",
name: "California Chicken Cafe"
},
{
id: "skjd86svvfdrsv55svbvf3f",
street_no: "7S",
locality: "Three Notch Road",
postal_code: "20619",
lat: "36.83",
long: "119.6",
name: "Avenue Cafe"
},
{
id: "mjdhgetr4pojfyts22fzfsh",
street_no: "22803",
locality: "Gunston Dr Lexington Park",
postal_code: "20688",
lat: "35.7788",
long: "119.979",
name: "Hi-Lo Cafe"
},
{
id: "jahgde7wgdiau8ewsahgosd",
street_no: "60H",
locality: "Solomos Island Road",
postal_code: "20688",
lat: "36.7783 N",
long: "119.4179 W",
name: "Avenue Bakery Cafe"
},
{
id: "urhw3837ehalod7w02b7835",
street_no: "225",
locality: "Macarthur Blvd",
postal_code: "20687",
lat: "35.77813",
long: "119.41791",
name: "Philz Coffee"
}
];
我尝试像这样实现它,但只获取最终数组的最后一个对象 -
function combineById (cafes, places) {
const finalArr = [];
const wholeObj = {};
const set = new Set();
for (const cafe of cafes) {
let cafeId = cafe.place_id;
let cafeName = cafe.name;
for (const place of places) {
if (cafeId === place.id && !set.has(cafeId)) {
set.add(cafeId);
wholeObj.id = place.id;
wholeObj.streetNo = place.street_no;
wholeObj.locality = place.locality;
wholeObj.postalCode = place.postal_code;
wholeObj.lat = place.lat;
wholeObj.long = place.long;
wholeObj.name = cafeName;
}
}
finalArr.push(wholeObj);
}
return finalArr;
}
const resultArr = combineById(cafes, places);
console.log(resultArr);
我正在尝试实现一个搜索函数,该函数将接受两个参数,即最终数组和搜索项。到目前为止,搜索功能在 cafes
数组上运行良好,但我很难组合 places
和 cafes
数组,combineById
函数仅返回最终数组的最后组合对象结果。我想要最终数组中的所有对象组合,以便稍后我可以直接调用最终数组进行进一步操作。
请帮我找出解决方案。
谢谢。
最佳答案
const cafes = [
{
name: "Bazaar Cafe",
place_id: "kjk234g4gcvfx8usg1l33pi",
},
{
name: "Ashley's Cafe",
place_id: "12hydbdf76sljfts87sbfis",
},
{
name: "Avenue Cafe",
place_id: "skjd86svvfdrsv55svbvf3f",
},
{
name: "Hi-Lo Cafe",
place_id: "mjdhgetr4pojfyts22fzfsh",
},
{
name: "California Chicken Cafe",
place_id: "12hydbdf76sljfts87sbfis",
},
{
name: "Avenue Bakery Cafe",
place_id: "jahgde7wgdiau8ewsahgosd",
},
{
name: "Philz Coffee",
place_id: "urhw3837ehalod7w02b7835",
},
];
const places = [
{
id: "jahgde7wgdiau8ewsahgosd",
street_no: "60H",
locality: "Solomos Island Road",
postal_code: "20688",
lat: "36.7783 N",
long: "119.4179 W",
},
{
id: "12hydbdf76sljfts87sbfis",
street_no: "1B",
locality: "Macarthur Blvd",
postal_code: "20619",
lat: "38.1781 N",
long: "118.4171 W",
},
{
id: "kjk234g4gcvfx8usg1l33pi",
street_no: "45250",
locality: "Worth Avenue, Unit A",
postal_code: "20619",
lat: "36.1152",
long: "117.521",
},
{
id: "saswe3s6yydtdr52hsd72yst",
street_no: "1X",
locality: "Macarthur Blvd",
postal_code: "20687",
lat: "36.7783",
long: "119.4179",
},
{
id: "skjd86svvfdrsv55svbvf3f",
street_no: "7S",
locality: "Three Notch Road",
postal_code: "20619",
lat: "36.83",
long: "119.6",
},
{
id: "mjdhgetr4pojfyts22fzfsh",
street_no: "22803",
locality: "Gunston Dr Lexington Park",
postal_code: "20688",
lat: "35.7788",
long: "119.979",
},
{
id: "urhw3837ehalod7w02b7835",
street_no: "225",
locality: "Macarthur Blvd",
postal_code: "20687",
lat: "35.77813",
long: "119.41791",
},
];
let transformed = places.reduce((result,place)=>{
let cafe = cafes.find(c=>c.place_id===place.id);
cafe && result.push({...place,name: cafe.name});
return result;
},[]);
console.log(JSON.stringify(transformed, null,2));
关于javascript - 如何组合两个键名称不同但对应值相同的对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61685157/