我需要监控结果。如果results.length增加,数组将被覆盖和保存。如果长度减少,则数组将被覆盖,但新值不会保存。
let playlists = [];
results = simpleMysqlQuery();
setinterval{
update(playlists, results);
}
function update(playlists, results){
if(playlists.length != results.length){
playlists = reWritePlaylists(results, playlists);
}
}
function reWritePlaylists(results, playlists){
results.forEach(function(item, i, arr){
playlists[i] = new Object();
playlists[i]['id'] = results[i]['id'];
playlists[i]['name'] = results[i]['name'];
});
if(playlists.length > results.length){
playlists = playlists.slice(0, results.length);
}
return playlists;
}发布于 2022-02-16 11:49:31
我找到德威了!
function reWritePlaylists(results, playlists){
playlists.splice(0, playlists.length);
results.forEach(function(item, i, arr){
playlists[i] = new Object();
playlists[i]['id'] = results[i]['id'];
playlists[i]['name'] = results[i]['name'];
});
return playlists;
}发布于 2022-02-16 11:22:48
使用slice并创建新数组时,新创建的数组不再是对原始数组的引用,因此update中的playlists参数不再引用与函数外部的playlists变量相同的数组实例。试试这个:
playlists = [];
results = simpleMysqlQuery();
setinterval{
playlists = update(playlists, results);
}
function update(playlists, results){
if(playlists.length != results.length){
playlists = reWritePlaylists(results, playlists);
}
return playlists
}
function reWritePlaylists(results, playlists){
results.forEach(function(item, i, arr){
playlists[i] = new Object();
playlists[i]['id'] = results[i]['id'];
playlists[i]['name'] = results[i]['name'];
});
if(playlists.length > results.length){
playlists = playlists.slice(0, results.length);
}
return playlists;
}发布于 2022-02-16 11:41:31
请按以下方式更新reWritePlaylists功能:
function reWritePlaylists(results, playlists){
playlists.splice(0, results.length);
results.forEach(function(item, i, arr){
playlists[i] = new Object();
playlists[i]['id'] = results[i]['id'];
playlists[i]['name'] = results[i]['name'];
});
return playlists;
}
https://stackoverflow.com/questions/71140790
复制相似问题