gpt4 book ai didi

javascript - 与数组进行比较并根据值进行更新的代码从不返回更新

转载 作者:行者123 更新时间:2023-12-03 12:30:17 27 4
gpt4 key购买 nike

我在 javascript 中有一段代码,它从一个 API(此数据的真实来源)中获取一组项目,并且应该在每个对象的更新日期时更新我的​​ dynamo 数据库中的数据该数组与我所拥有的不匹配。一切看起来都对我来说是正确的,但我总是返回,即使我已经验证存在更新,也不需要更新任何内容。不太确定我在这里做错了什么。

let count = 0;

for (let appToCompare of arrayOfFormattedApps) {

let hasMatch = false;

for (let index = 1; 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);
}
}

最佳答案

您的代码中存在一个问题,数组索引从零开始,但您的循环从 1 开始

let index = 1

因此,如果第一个应用程序更新,代码将无法检测到它。根据您的代码,我将索引编辑为零并尝试创建一些转储数据,并尝试运行您的代码。看起来效果不错

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);

所以这里唯一的问题是您将数据推送到 arrayOfAppsWithUpdates 两次,用于每个更新的应用程序。因此,请再次检查您的 API 以确保其正确无误。

尤其是每个 App 信息对象上的两个属性 ApplicationIdLastUpdateDateTime,因为您使用 === 来比较它们, === 还会比较数据类型(数字、字符串...)和数据值,因此请确保它们也是相同的数据类型

希望对你有帮助

关于javascript - 与数组进行比较并根据值进行更新的代码从不返回更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58546091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com