首页 > 解决方案 > 仅返回数组中的一个对象

问题描述

if (lastUserMessage === '/love') {
    const love = [];
    newlove = prompt("What do you love?", "Thing you love.");
    love.push(newlove);
    localStorage.setItem('love', JSON.stringify(love));
    botMessage = 'Awesome.';
}

if (lastUserMessage === 'What do I. love?') {
    var love2 =   JSON.parse(localStorage.getItem("love"));
    botMessage = love2;
}

它假设在数组中存储超过 1 个对象,但我只得到 1 个值。

标签: javascriptarrays

解决方案


目前,您总是将您的值初始化为一个空数组:

const love = [];

但听起来您希望它将先前存储的值保留在本地存储中。为此,只需将其初始化为这些值:

const love = JSON.parse(localStorage.getItem('love'));

作为一个额外的步骤,您还可以null检查存储的数组,以防这是第一次运行代码并且尚未存储任何内容。未经测试,但我怀疑这样的事情可能会奏效:

const love = JSON.parse(localStorage.getItem('love') || '[]');

如果该项目不存在,则该想法getItem将返回,因此在这种情况下,您将传递给并从一个空数组开始。null'[]'JSON.parse


推荐阅读