我想跟蹤“結果”的變化。如果 results.length 增加,陣列將被覆寫并保存。如果長度減小,則陣列將被覆寫,但不會保存新值。
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;
}
uj5u.com熱心網友回復:
當你使用slice并創建一個新陣列時,新創建的陣列不再是對原陣列的參考,所以playlistsin in 的引數update不再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;
}
uj5u.com熱心網友回復:
我找到了de wae!
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;
}
uj5u.com熱心網友回復:
請更新 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://www.uj5u.com/qianduan/425119.html
標籤:javascript sql 节点.js 数组 片
