首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法覆盖javascript数组

无法覆盖javascript数组
EN

Stack Overflow用户
提问于 2022-02-16 11:14:42
回答 3查看 82关注 0票数 1

我需要监控结果。如果results.length增加,数组将被覆盖和保存。如果长度减少,则数组将被覆盖,但新值不会保存。

代码语言:javascript
复制
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;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-02-16 11:49:31

我找到德威了!

代码语言:javascript
复制
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;
}
票数 1
EN

Stack Overflow用户

发布于 2022-02-16 11:22:48

使用slice并创建新数组时,新创建的数组不再是对原始数组的引用,因此update中的playlists参数不再引用与函数外部的playlists变量相同的数组实例。试试这个:

代码语言:javascript
复制
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;
}
票数 2
EN

Stack Overflow用户

发布于 2022-02-16 11:41:31

请按以下方式更新reWritePlaylists功能:

代码语言:javascript
复制
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;
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71140790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档