首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建到本地存储的javascript数组未返回所需结果

创建到本地存储的javascript数组未返回所需结果
EN

Stack Overflow用户
提问于 2020-03-19 02:38:31
回答 1查看 38关注 0票数 0

我正在尝试创建一个包含一些齿轮箱值的本地存储数组,然后我需要用它来对特定的array.value进行更多的计算。我遇到的问题是,创建的条目只返回2个数组条目,尽管所有条目都在那里,但“在开头,然后在倒数第二个条目,然后在最后一个条目之前和之后。以下是生成的值。spd_Dev = ["202.391,172.876,120.451,102.601,85.173,72.664,61.701,52.706,45.116,38.510,32.326,27.407,22.910,19.536,16.585,14.195,12.228","10.401"]当我使用固定数组时,我将其输入为:

代码语言:javascript
复制
var spd_Dev = [202.391, 172.876, 120.451, 102.601, 85.173, 72.664, 61.701, 52.706, 45.116, 38.510, 32.326, 27.407, 22.910, 19.536, 16.585, 14.195, 12.228, 10.401];

所以我的问题是如何将这些值写入本地存储,并再次从本地存储读取,这样我就可以将这些值作为数组使用。

这就是我想要做的。

代码语言:javascript
复制
var D_RatioId = data.truck.make + data.truck.model + "D_Ratio"
var G_RatioId = data.truck.make + data.truck.model + "G_Ratio"

var fGr = data.truck.forwardGears;
var gr = data.truck.displayedGear;
var Rpm = data.truck.engineRpm * 100;
var spd = data.truck.speed;
var T_Dia = 1008.3;


if (localStorage.getItem(G_RatioID) == undefined) {
    localStorage.setItem(G_RatioID, '');
    var fG_Rat = [localStorage.getItem(G_RatioID)];
} else {
    var fG_Rat = [localStorage.getItem(G_RatioID)];
}

var spd_Dev = localStorage.getItem(Spd_DevId);
spd_Dev = spd_Dev ? spd_Dev.split(', ') : [];

if (localStorage.getItem("i") == undefined) {
    localStorage.setItem("i", 1);
    var i = localStorage.getItem("i");
} else {
    var i = localStorage.getItem("i");
}
if (i <= fGr && spd > 0.5) {
    if (i <= fGr + 1) {
        if (i == gr) {
            if (RPM > 1450) {
                var G_Ratio = Math.abs(Rpm / D_Ratio * (Math.PI * T_Dia / 1000) * 60 / spd / 1000, 2).toFixed(2);
                var spd_D = Math.abs(RPM / (RPM / G_Ratio / D_Ratio * (Math.PI * T_Dia / 1000) * 60 / 1000) * 0.821932).toFixed(3); 
                fG_Rat.push(G_Ratio);
                spd_Dev.push(spd_D);
                i++;
                localStorage.setItem("i", i);
                var G_RatioValue = fG_Rat;
                var Spd_DevValue = spd_Dev;
                SetG_Ratio(G_RatioID, G_RatioValue);
                SetSpd_Dev(Spd_DevId, Spd_DevValue);
                localStorage.setItem("spd_Dev", JSON.stringify(Spd_DevValue));
            }
        }
    }
}

function SetG_Ratio(G_RatioID, G_RatioValue) {
localStorage.setItem(G_RatioID, G_RatioValue);
console.log(G_RatioID, G_RatioValue);
}

function SetSpd_Dev(Spd_DevId, Spd_DevValue) {
localStorage.setItem(Spd_DevId, Spd_DevValue.toString());
console.log(Spd_DevId, Spd_DevValue, Spd_DevValue.length);
}
    if (spd >= 0) {
    var spd_Dev = [localStorage.getItem(Spd_DevId)];
    var spD_D = JSON.parse(spd_Dev);
    for (i = 1; i < (fGr + 1); i++) { // Some more code dependant on the above results //
EN

回答 1

Stack Overflow用户

发布于 2020-11-17 08:21:27

为什么不使用LSM.js呢?它会让一切变得更简单。您可以将数组作为数组,这样它将只返回完整的数组,您将不需要使用split(),

https://github.com/kevinj045/LSM_js

代码语言:javascript
复制
var lsm = new LSM("G_RatioID");
    var G_RatioValue ["202.391,172.876,120.451,102.601,85.173,72.664,61.701,52.706,45.116,38.510,32.326,27.407,22.910,19.536,16.585,14.195,12.228","10.401"];
    lsm.set("G_RatioID",G_RatioValue);

    console.log(lsm.get("G_RatioID")); // it will return the full array

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

https://stackoverflow.com/questions/60745622

复制
相关文章

相似问题

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