0

我在尝试从 localStorage 获取价值时得到 NaN。任何指针?在应用 Number 函数之前,该值为“488”。

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class PcUtilsService {

  constructor() { }

  // State Management
  setSession(key: string, value: any): void {
    localStorage.setItem(key, JSON.stringify(value));
  }
  getSession(key: string): number {
    if (typeof window !== 'undefined') {
      const value = localStorage.getItem(key) as string;
      console.log('value', Number(value));
      return Number(value);
    }
  }

  clearSession(): void {
    localStorage.clear();
  }
}
4

2 回答 2

1

由于您JSON.stringify(value)在保存之前已完成,因此您需要JSON.parse(value)在尝试将其转换为Number检索时执行此操作。

所以,代码会是这样的:Number(JSON.parse(value))

于 2019-09-10T05:07:55.750 回答
0

如果值为"488",它实际上是一个字符串。我也将通过删除JSON.stringify并使用+将字符串转换为数字来简化这一点,如下所示:

this.setSession('key', '488');

// ...

setSession(key: string, value: string): void {
  localStorage.setItem(key, value);
  const a = +localStorage.getItem(key)
  console.log(a) // is now a number
}

堆栈闪电战

于 2019-09-10T11:23:59.040 回答