如何将 JSON 字符串数据更改为 JSON 数字数据

How to change JSON String data to JSON Number data

大家好,我正在尝试获取 'review' 的数值,但在 JSON 中它 returns 是一个字符串,因此我不能t 执行我所做的求和,结果是一个无意义的值

objective 是,当有人对 X 产品发表评论时,数据保存在 Firebase 中 JSON,问题是 'review' 被保存为一个字符串而不是保存为数字

有没有办法把这个单条数据转换成数字?

这是JSON响应

"[{\"review\":\"4\",\"comment\":\"Good product \",\"name\":\"SnowFall\",\"image\":\"https://lh3.googleusercontent.com\",\"method\":\"google\"}]"

这是我的 TypeScript

callback(i, totalReviews) {

    if (!this.render) {

      this.render = true;

      let globalRating = 0;
      let globalReviews = 0;

      setTimeout(function () {

        totalReviews.forEach((review, index) => {

          globalRating += review.length;

          for (const i in review) {

            globalReviews += review[i].review;

            console.log("globalReviews", globalReviews);
          }
        })

        console.log("Raiting", globalRating);
        console.log("Reviews", globalReviews);

        let averageReviews = Math.round(globalReviews / globalRating);
        let precentage = Math.round(globalReviews * 100 / (globalRating * 5));

        $(".globalRating").html(globalRating);
        $(".percentage").html(precentage);

        let averageRating = DinamicReviews.fnc(averageReviews);

        $(".br-theme-fontawesome-stars").html(`

        <select class="ps-rating reviewsOption" data-read-only="true"></select>

        `)

        for (let i = 0; i < averageRating.length; i++) {

          $(".reviewsOption").append(`

          <option value="${averageRating[i]}">${i + 1}</option>

          `)

        }

        Rating.fnc();

      }, i * 10)
    }
  }

这是它在 FireBase 中的保存方式 FireBase RealTime Database

这是它在我的前端上的样子 FrontEnd

有一行将 .review 值分配给 globalReviews 变量,因为这是使用 += 这将连接字符串,这就是您面临的问题.

如果您将同一行更改为:globalReviews += +review[i].review;

这将修复错误。

之所以在变量前面添加一个 + 符号是因为这个符号被称为 一元加运算符,它将值转换为数字或者如果存储值不是数字,它将在 Unary Plus Operator documentation

之后转换

为了使此代码安全并因此不添加可能的 NaN 您可以使用以下语法将故障安全设置为 0 globalReviews += +review[i].review || 0;