gpt4 book ai didi

javascript - 简单的 JavaScript 对象比较

转载 作者:行者123 更新时间:2023-12-02 20:15:54 24 4
gpt4 key购买 nike

我正在尝试将一个简单的字符串传递给事件监听器,以便识别要修改的适当数组对象。通过查看日志(在注释中显示),我了解到我传递的是一个对象,它不能直接与另一个对象的属性进行比较。

我应该传递一个具有字符串作为属性的对象(就像数组对象那样),还是有更合适的方法将该对象作为字符串引用或以某种方式调用它的名称(就像第一个中的日志所做的那样)评论)?

// I just want to pass a string as an argument. Here is a static example.
var timestampID = '1307740835264';
Ti.App.fireEvent('confirmation',timestampID);

请注意第一个日志输出如何将参数解释为字符串,但 if 比较将其识别为对象。

Ti.App.addEventListener('confirmation',function(timestampID) { // produces "[DEBUG] fire app event: confirmation with 1307740835264"
Ti.API.info(timestampID); // produces "[INFO] { type = confirmation; }"
for (i=0;i<myArray.length;i++) {
Ti.API.info(myArray[i].timestampID + ' | ' + timestampID); // produces "[INFO] 1307740835264 | [object Object]"
if (myArray[i].timestampID == timestampID) { // will produce false
// will never happen
}
}
});

谢谢!

最佳答案

所以对我来说,传递给处理程序的 timestampID 看起来是一个对象,但是从第二个语句(以及随附的 [INFO] 注释)来看,我完全不知道它有什么属性有。我们假设它有一个名为时间戳的属性。那么你的 if 语句应该是

if (myArray[i].timestampID === timestampID.timestamp) 

但这恐怕就是我能从这段代码片段中收集到的全部信息了。

更新:好的,我知道您是如何触发事件的。 Titanium API 在这一点上令人困惑地迟钝(看起来 help for fireEvent 是错误的:两个参数称为“名称”?)。我看不到任何例子。但是它确实表明您传入的数据(必须是?)序列化为 JSON。

现在我知道了,查看第二条语句的 [INFO] 行更有意义。它是一个包含 JSON 数据的字符串。您的数据丢失,因为它是字符串值。尝试用这个来触发:

Ti.App.fireEvent('confirmation', { timestampID: '1307740835264' } );

在事件处理程序中:

Ti.App.addEventListener('confirmation', function (data) {
for (i=0;i<myArray.length;i++) {
if (myArray[i].timestampID === data.timestampID) {
...code...
}
}

});

关于javascript - 简单的 JavaScript 对象比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6312496/

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