3 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
您的代碼中有一個(gè)問(wèn)題,數(shù)組索引從零開始,但您從 1 開始循環(huán)
let index = 1
所以如果第一個(gè)應(yīng)用程序更新,代碼將無(wú)法檢測(cè)到它。根據(jù)您的代碼,我將索引編輯為零并嘗試創(chuàng)建一些轉(zhuǎn)儲(chǔ)數(shù)據(jù),并嘗試運(yùn)行您的代碼。看起來(lái)運(yùn)作良好
const currentCachedListOfApps = [
{
ApplicationId: 1,
AppName: "App 1",
LastUpdateDateTime: 4
},
{
ApplicationId: 2,
AppName: "App 2",
LastUpdateDateTime: 2
}
];
const arrayOfFormattedApps = [
{
ApplicationId: 1,
AppName: "App 1",
LastUpdateDateTime: 1
},
{
ApplicationId: 2,
AppName: "App 2",
LastUpdateDateTime: 3
}
];
const arrayOfAppsWithUpdates = [];
let count = 0;
for (let appToCompare of arrayOfFormattedApps) {
let hasMatch = false;
for (let index = 0; index < currentCachedListOfApps.length; ++index) {
var cachedApp = currentCachedListOfApps[index];
if (cachedApp.ApplicationId === appToCompare.ApplicationId) {
if (cachedApp.LastUpdateDateTime !== appToCompare.LastUpdateDateTime) {
arrayOfAppsWithUpdates.push(appToCompare);
hasMatch = true;
console.log(cachedApp.AppName + ' is being updated')
++count;
break;
}
}
}
if (hasMatch) {
arrayOfAppsWithUpdates.push(appToCompare);
}
}
console.log(arrayOfAppsWithUpdates);
所以這里唯一的問(wèn)題是你為每個(gè)更新的應(yīng)用程序?qū)?shù)據(jù)推送到arrayOfAppsWithUpdates兩次。所以請(qǐng)?jiān)俅巫屑?xì)檢查您的 API 以確保它正確。
尤其是每個(gè) App 信息對(duì)象上的兩個(gè)屬性ApplicationId和LastUpdateDateTime,因?yàn)槟褂?==來(lái)比較它們,所以===也會(huì)比較數(shù)據(jù)類型(數(shù)字、字符串...)和數(shù)據(jù)值,因此請(qǐng)確保它們相同數(shù)據(jù)類型也是
希望這有幫助

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個(gè)贊
它看起來(lái)確實(shí)是正確的,所以也許在這個(gè)代碼塊之外有一些東西是錯(cuò)誤的??赡苷业藉e(cuò)誤的一種方法是注銷您比較的 hte 屬性。
...
console.log(cachedApp.ApplicationId +" === "+ appToCompare.ApplicationId)
if (cachedApp.ApplicationId === appToCompare.ApplicationId) {
console.log(cachedApp.LastUpdateDateTime +" !== "+ appToCompare.LastUpdateDateTime)
if (cachedApp.LastUpdateDateTime !== appToCompare.LastUpdateDateTime) {

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
我會(huì)做類似下面的事情,雖然我沒(méi)有看到任何錯(cuò)誤,只是一些笨拙的代碼:
let appsToUpdate = arrayOfFormattedApps.find((appToCompare, index)=> {
for(let cachedApp in currentCachedListOfApps) {
if(cachedApp.ApplicationId === appToCompare.ApplicationId) {
if (cachedApp.LastUpdateDateTime !== appToCompare.LastUpdateDateTime) {
return appToCompare
}
}
}
})
// Do work on appsToUpdate
添加回答
舉報(bào)