无法覆盖 javascript 数组
Can't overwrite javascript array
我想跟踪“结果”的变化。如果 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;
}
当你使用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;
}
请像下面这样更新 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;
}
找到路了!
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;
}
我想跟踪“结果”的变化。如果 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;
}
当你使用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;
}
请像下面这样更新 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;
}
找到路了!
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;
}