我有一個選定的商店物件資料。當我將一個POST請求作為回傳時,我會得到單個資料物件或資料陣列,這取決于郵政編碼。一個郵政編碼有多個PickUp點或單個PickUp點。
我想根據POST請求回傳資料創建一個 Helper 函式,如果它與我已經選擇的商店物件資料不匹配,則回傳 true else 回傳 else。我不知道如何創建不可預測的輔助函式,它可以是單個物件或具有多個物件的陣列。
這是我的示例資料。我想將資料與areaId
const selectedArea = {
areaId: "84ed84ad-81e3-49ed-absjsjjjs",
name: "New york restaurant",
address: {
city: "New York",
postalCode: "0012231",
street: "New jersy"
}
};
const newArea = [
{
areaId: "84ed84ad-81e3-49ed-absyay6w",
name: "Veg retaurant",
address: {
city: "Calfornia",
postalCode: "0018383",
street: "Calfornia"
}
},
{
areaId: "84ed84ad-sjsjjs",
name: "Indian restaurant",
address: {
city: "Calfornia",
postalCode: "001aas8383",
street: "Calfornia"
}
},
{
areaId: "84ed84ad-81e3-49sjsjjshq8q",
name: "Desi restaurant",
address: {
city: "Calfornia",
postalCode: "0011881",
street: "Calfornia"
}
},
{
areaId: "84ed84ad-sjsjj-ssks-msms",
name: "chinese restaurant",
address: {
city: "Calfornia",
postalCode: "02992",
street: "Calfornia"
}
}
];
const newArea =
{
areaId: "84ed84ad-81e3-49ed-absyay6w",
name: "Veg retaurant",
address: {
city: "Calfornia",
postalCode: "0018383",
street: "Calfornia"
}
}
;
const selectedAreaMatch = (selectedArea, newArea) => {
console.log({ selectedArea });
console.log({ newArea }); // it can be object or arrays
// if does not match return true
// if match return false
return true;
};
uj5u.com熱心網友回復:
首先,newArea 已經宣告了兩次。如果您想通過 areaId 比較兩個區域,您可以在您的函式中執行以下操作:
const selectedAreaMatch = (selectedArea, newArea) => {
console.log({selectedArea});
console.log({newArea}); // it can be object or arrays
// if does not match return true
// if match return false
for (let i = 0; i < newArea.length; i ) {
if (newArea[i].areaId === selectedArea.areaId) {
return true;
}
}
return false;
};
uj5u.com熱心網友回復:
您可以將物件轉換為具有單個元素的陣列,然后進行比較:
const selectedAreaMatch = (selectedArea, newArea) => {
const areas = Array.isArray(newArea) ? newArea : [newArea];
// assumes that the area ids are unique
return areas.some(area => area.areaId === selectedArea.areaId)
};
如果區域 ID 不是唯一的,則比較會稍微復雜一些。在這種情況下,您需要迭代物件的每個屬性并與另一個屬性進行比較。
uj5u.com熱心網友回復:
您可以通過使用 將引數轉換為陣列來克服差異[].concat。這種方法的好處是,無論引數是否為陣列,它都會導致相同的結果。
奇怪的是,您期望true在沒有匹配項時呼叫函式selectedAreaMatch。然后我會呼叫它selectedAreaIsNew,或者反轉回傳值,以便true在匹配時出現。但是,我保留了您指定的名稱和預期回傳值:
const selectedAreaMatch = (selectedArea, newArea) => {
// if does not match return true
// if match return false
return ![].concat(newArea).some(area => area.areaId === selectedArea.areaId);
};
const selectedArea = {areaId: "84ed84ad-81e3-49ed-absjsjjjs",name: "New york restaurant",address: {city: "New York",postalCode: "0012231",street: "New jersy"}};
const newArea = [{areaId: "84ed84ad-81e3-49ed-absyay6w",name: "Veg retaurant",address: {city: "Calfornia",postalCode: "0018383",street: "Calfornia"}},{areaId: "84ed84ad-sjsjjs",name: "Indian restaurant",address: {city: "Calfornia",postalCode: "001aas8383",street: "Calfornia"}},{areaId: "84ed84ad-81e3-49sjsjjshq8q",name: "Desi restaurant",address: {city: "Calfornia",postalCode: "0011881",street: "Calfornia"}},{areaId: "84ed84ad-sjsjj-ssks-msms",name: "chinese restaurant",address: {city: "Calfornia",postalCode: "02992",street: "Calfornia"}}];
const newArea2 ={areaId: "84ed84ad-81e3-49ed-absyay6w",name: "Veg retaurant",address: {city: "Calfornia",postalCode: "0018383",street: "Calfornia"}};
console.log(selectedAreaMatch(selectedArea, newArea));
console.log(selectedAreaMatch(selectedArea, newArea2));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/354012.html
標籤:javascript 数组 目的
