我有一個物件陣列和一個物件
const filterArray = [{bestTimeToVisit: 'Before 10am'}, {bestDayToVisit: Monday}]
此值在減速器中設定,有效負載將類似于
{bestTimeToVisit: 'After 10am'}
or
{bestDayToVisit: Tuesday}。
所以我需要的是當我得到一個有效負載時{bestTimeToVisit: 'After 10am'},如果bestTimeToVisit不在 filterList 陣列中,那么將此值添加到 filterList 陣列中。
如果bestTimeToVisit已經在具有不同值的陣列中,則用相同的鍵替換該物件的值
uj5u.com熱心網友回復:
if(filterArray.hasOwnProperty("bestTimeToVisit")) {
filterArray["bestTimeToVisit"] = payload["bestTimeToVisit"];
} else {
filterArray.push({"bestTimeToVisit": payload["bestTimeToVisit"]});
}
uj5u.com熱心網友回復:
我將物件陣列轉換為常規物件,然后再轉換回物件陣列。使事情變得不那么復雜。我假設每個回傳的物件只有一個鍵/值,并且該順序無關緊要。
const objectArraytoObject = (arr) =>
arr.reduce((acc, item) => {
const key = [Object.keys(item)[0]];
return { ...acc, [key]: item[key] };
}, {});
const newValues = [{ someKey: 'something' }, { bestDayToVisit: 'Tuesday' }];
const filterArray = [
{ bestTimeToVisit: 'Before 10am' },
{ bestDayToVisit: 'Monday' },
];
const newValuesObj = objectArraytoObject(newValues);
const filterObj = objectArraytoObject(filterArray);
const combined = { ...filterObj, ...newValuesObj };
const combinedToArray = Object.keys(combined).map((key) => ({
[key]: combined[key],
}));
console.log(combinedToArray);
uj5u.com熱心網友回復:
如果沒有找到,則需要遍歷陣列并找到滿足修改或添加的物件。
function checkReduced(filterrray,valueToCheck="After 10am"){
let isNotFound =true;
for(let timeItem of filterrray) {
if(timeItem.bestTimeToVisit && timeItem.bestTimeToVisit !== valueToCheck) {
timeItem.bestTimeToVisit=valueToCheck;
isNotFound=false;
break;
}
}
if(isNotFound){filterrray.push({bestTimeToVisit:valueToCheck})}
}
const filterArray = [{bestDayToVisit: "Monday"}];
checkReduced(filterArray,"After 9am");//calling the function
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/494681.html
