【问题标题】:Assigning Javascript array to variable is causing items to drop from array将 Javascript 数组分配给变量导致项目从数组中删除
【发布时间】:2020-01-30 05:09:22
【问题描述】:

我遇到了一个奇怪的问题,将数组分配给变量会导致数组中的某些项目被删除。这也可能与 Vue.js 有关。

我将一组数据作为字符串存储在 localStorage 中(因为这是所有 localStorage 接受的)。当用户单击应用程序中的一个按钮时,它会运行一个 Vue 函数来检查 localStorage 是否具有特定的键,如果是,我将该键分配给函数中的变量“localCards”。当 localStorage 数据被分配给变量时,它会删除数组中的一些项目。下面是一个代码示例,以便更好地理解:

console.log( JSON.parse(localStorage.getItem('localCards')) );
// Returns the complete array
let localCards = JSON.parse(localStorage.getItem('localCards'));
console.log( localCards );
// Returns the first two items in the array

知道为什么将数据分配给变量会删除一些项目吗?

【问题讨论】:

  • 你能提供一个minimal reproducible example吗?这些信息不足以重现该行为。
  • 将其分配给局部变量不会删除项目。记录到控制台的对象/数组是“活动的”,直到您单击展开,所以如果任何其他代码修改了该数组,即使日志记录发生在突变之前,它也会反映在日志记录中。

标签: javascript arrays vue.js local-storage


【解决方案1】:

事实证明,之所以发生这种情况,是因为该数组后来在代码中发生了变异。正如@skirtle 在上面的 cmets 中指出的那样,我不知道它会影响突变之前的日志记录。

【讨论】:

    【解决方案2】:

    我猜你应该先声明你的变量...作为一个数组;然后解析它

    var localCards =[];
    localCards =JSON.parse(localStorage.getItem('localCards'));
    

    【讨论】:

    • 分配一个立即丢弃的空数组有什么不同?
    猜你喜欢
    • 1970-01-01
    • 2014-05-01
    • 2015-10-25
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2016-12-12
    • 2021-10-31
    • 2018-02-15
    相关资源
    最近更新 更多