gpt4 book ai didi

javascript - 检查数组中是否存在键并使用变量设置新值时出现问题

转载 作者:行者123 更新时间:2023-11-29 22:06:13 28 4
gpt4 key购买 nike

我正在尝试检查数组中是否存在键,如果存在则更改它,如果不存在则添加。我需要在没有 jQuery 的情况下完成它。我将数组存储在字符串化的 cookie 中。

if (item_id in items) items[item_id] = count;
else
{
var tmp = {};
tmp[item_id] = count;
items.push(tmp);
}

item_idcount 总是数字。问题是当我检查键是否存在时,它会检查数组中元素的数量。例如,如果我有对 [{1:5},{5,3}] 并检查键 5 是否存在,如果返回 false,如果我检查键 1,它返回 true 并更改数组像那样 [{1:5},new_value]

我尝试了 if (item_id in items)if (items[item_id]),但没有用。我应该如何让它正常工作?

最佳答案

简单修复

items 是一个普通的 JS 数组,不是关联数组。您将必须针对每个对象循环检查 item_id,如下所示。如果在列表中的任何地方都找不到它,在循环之后,将它添加到列表中(就像你原来的 else 所做的那样):

var found = false;

for (var i=0; i < items.length; i++) {
if (item_id in items[i]) {
items[i][item_id] = count;
found = true;
break;
}
}

if (!found)
{
var tmp = {};
tmp[item_id] = count;
items.push(tmp);
}

更完整的解决方案

请注意,您可能遇到的一些困难可能是由于您选择了不寻常的数据结构,并且您可能会选择以不同的方式构建数据以便于查找和检索。现在你有一个不相关的对列表,[{key1 : value1}, {key2: value2}, ...] 当你真的想要一个像 { key1 这样的字典( HashMap ) : value1, key2: value2, ...}.

如果您使用更新后的结构,您的代码看起来会更像原来的:

if (item_id in items) items[item_id] += count;
else
{
items[item_id] = count;
}

(我假设您实际上想要增加 count(如果它已经存在),而不是覆盖它。这假定一个关联数组(字典)作为您的数据结构。)

关于javascript - 检查数组中是否存在键并使用变量设置新值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20835901/

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