Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 监视阵列的更改_Javascript_Node.js - Fatal编程技术网

Javascript 监视阵列的更改

Javascript 监视阵列的更改,javascript,node.js,Javascript,Node.js,我想在我自己的网站上监控产品的变化。我已将产品的所有可用大小存储在一个阵列中,并且我希望在向阵列中添加新大小后立即返回console.log 我这样做只是为了练习,所以我不想监视数据源 for(让产品中的产品){ 主要(产品) }; 主要功能(产品){ 请求({ url:product.url },(错误、恢复、正文)=>{ 如果(res.statusCode==200){ const$=cheerio.load(车身); const availableSizes=[];//此选项存储所有可用大

我想在我自己的网站上监控产品的变化。我已将产品的所有可用大小存储在一个阵列中,并且我希望在向阵列中添加新大小后立即返回console.log

我这样做只是为了练习,所以我不想监视数据源

for(让产品中的产品){
主要(产品)
};
主要功能(产品){
请求({
url:product.url
},(错误、恢复、正文)=>{
如果(res.statusCode==200){
const$=cheerio.load(车身);
const availableSizes=[];//此选项存储所有可用大小
$('.size_box')。每个((i,el)=>{
let size=$(el).text()
availableSizes.push(大小)//将每个大小添加到availableSizes
})
}否则{
console.log('Error'+err)
console.log('在'+(config.delay/1000)+'秒/s'中重试)
设置超时(()=>{
主要(产品)
},config.delay)
};
});
};
基本上,我想要实现/添加到代码中的是:

if(){
设置超时(()=>{
主要(产品)
},config.delay)
}否则{
console.log('添加新大小'+大小)
}
但正如我所说,我不知道如何检查阵列的具体更改,而不只是一直垃圾邮件所有可用的大小


如果有更好的方法来监控大小的变化,请随意建议,我想到的第一件事就是将所有大小存储在一个数组中。

他的方法有点老套,但不幸的是,我不知道有更好的方法来做到这一点。您可以通过在定义上覆盖push函数来修改正在调用的push函数。见下文:

var myArr=[];
myArr.push=(…args)=>{
logOnPush(args);
Array.prototype.push.apply(myArr,args);
}
函数logOnPush(res){
var container=document.getElementById(“displayContainer”);
container.innerText=container.innerText+'\n'+'添加的项目:'+res;
log('Items added:',res);
}
函数addToArray(){
myArr.push(Math.round(Math.random()*10));
var container=document.getElementById(“displayContainer”);
container.innerText=myArr.join(',');
}
document.getElementById(“addBtn”).addEventListener('click',()=>{
addToArray();
});
添加到数组


您可以创建一个自定义类,并使用自定义的
推送方法更新其数据。该类将完全充当数组对象(您甚至可以扩展该数组类),但随后可以添加自定义行为


看看这一页的例子:

您可以尝试:仍然回到我在上一个问题中指出的同一个问题。您必须存储对数组的引用,以便与每次调用
main()
时创建的新数组进行比较。每次调用
main()gone@charlietfl我知道,但我不知道在调用main()后如何存储上一个数组而不更改它。在
main()
外部创建一个对象或映射,该对象或映射将产品标识符作为键和大小数组,然后将上一个数组与当前数组进行比较