首页 > 解决方案 > 如何将对象/字符串与循环函数节点 js 进行比较?

问题描述

我一直在尝试查找有关此特定主题的文档,但没有成功。我已经构建了一个个人脚本,它可以找到一个列表并将其发布到一个不和谐的网络挂钩上,这个脚本每 60 秒循环一次,我要解决的问题是每次循环时,它都会将相同的产品发布到web-hook,我正在尝试找到一种方法来比较它们,以便如果它是相同的项目,它不会重新发布而是记录,因为新列表不会经常发布。我遗漏了一些代码,因为其中包含私人信息,但它只是使用 axios 的标准 https 请求。如果您查看代码,您会看到我试图弄清楚如何比较其中一个对象,但它显然不起作用,因为标题总是 = 他们自己。任何指向文档或示例的内容将不胜感激!


setInterval(function(){

axios(config)
.then(function (response) {
  let picture = (response.data.listings[0].photos[0]._links.small_crop.href);
  let link = (response.data.listings[0]._links.web.href);
  let title = (response.data.listings[0].title);
  let price = (response.data.listings[0].price.amount);
  let condition = (response.data.listings[0].condition.display_name);
  let description = (response.data.listings[0].description);
  
  if(title === title) {
    console.log("No New Pedals")
    
  }
  else{

  const msg = new webhook.MessageBuilder()
                .setImage(picture)
                .setName("️ " + "New Listing Found!" + " ️")
                .setTitle(title)
                .addField(price, condition + " Condition")
                .setColor("#f6870f")
                .setURL(link)


                
                
Hook.send(msg);


}})
},10000);

标签: javascriptcompare

解决方案


只需使用一个范围比setInterval回调更大的变量:您可以使用它来跟踪之前的值title

let prevTitle; // Add this variable

setInterval(function(){
    axios(config).then(function (response) {
        // ...
        if(title === prevTitle) { // Compare with it
            console.log("No New Pedals");
        } else {
            prevTitle = title; // Keep track of the change
            // ...
        }
    });
}, 10000);

推荐阅读