gpt4 book ai didi

javascript - 防止 knockout.js 可观察数组中的重复项

转载 作者:行者123 更新时间:2023-11-30 12:59:54 25 4
gpt4 key购买 nike

我运行一个定时循环,它从服务器异步获取数据并更新一个可观察数组。我认为这可以防止重复,但似乎没有。如何防止添加重复项?

// Operations
self.addDevice = function (device) {
if (device != null && ko.utils.arrayIndexOf(self.devices, device) < 0) {
self.devices.push(device);
}
}

这总是返回 true,因为数组中不包含特定设备(尽管它显然包含)。

最佳答案

您获得的更新可能与数组中的对象具有相同的值,但它们可能是不同的对象,因此简单的相等性检查将返回 false。您必须提供回调以通过比较对象内的属性来自行测试是否相等。

例如,如果 a = {prop: 5}b = {prop: 5},则 a == b 返回错误的。您需要将函数传递给 ko.utils.arrayFirstko.utils.arrayFilter,例如

var newItem = new Item();

ko.utils.arrayFirst(self.items(), function(existingItem, newItem) {
return existingItem.prop == newItem.prop;
}

关于javascript - 防止 knockout.js 可观察数组中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17579094/

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