首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在嵌套数组中查询并返回对象

在嵌套数组中查询并返回对象
EN

Stack Overflow用户
提问于 2022-08-09 12:44:58
回答 3查看 31关注 0票数 0

寻找一些帮助解决问题,因为我是非常新的Javascript。

我想要写一个函数来记录反馈分数,如下面的代码所示。我想要一个带有嵌套数组的数组,如果给出的分数低于3分,它应该会增加negative属性,如果它在4-6范围内,那么neutral属性应该增加,当它在7-10范围时,positive应该会增加。

我继续简单地在控制台日志中接收

代码语言:javascript
复制
{positive: 0, negative: 0, neutral: 0} 

这显然不是预期的产出。怎么啦?

代码语言:javascript
复制
function gatherFeedback(feedbackArray) {
  let result = {
    positive: 0,
    negative: 0,
    neutral: 0
  };

  if (feedbackArray > 0) {
    for (let i = 0; i < feedbackArray; i++) {
      if (feedbackArray[i][1] >= 7) {
        result.positive++
      } else if (feedbackArray[i][1] <= 3) {
        result.negative++
      } else if (feedbackArray[i][1] > 3 && feedbackArray < 7) {
        result.neutral++
      }
    }
  }
  return result;
}

console.log(gatherFeedback([
  ['feedback1', 10],
  ['feedback2', 3],
  ['feedback3', 6]
]))

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-08-09 12:56:09

您的主要问题是这一行:

代码语言:javascript
复制
if(feedbackArray > 0){

当您尝试将数组与整数进行比较时,数组首先被转换为字符串,在本例中,该字符串将产生:

代码语言:javascript
复制
"feedback1,10,feedback2,3,feedback3,6"

将其与0进行比较,将产生false (请参见说明这里的原因),这样您的循环就不会运行。同样的问题也适用于下一行:

代码语言:javascript
复制
i < feedbackArray

使用for...of循环就更简单了(注意,您还可以简化您的if/else结构):

代码语言:javascript
复制
function gatherFeedback(feedbackArray) {
  let result = {
    positive: 0,
    negative: 0,
    neutral: 0
  };

  for (let f of feedbackArray) {
    if (f[1] >= 7) {
      result.positive++
    } else if (f[1] > 3) {
      result.neutral++
    } else {
      result.negative++
    }
  }
  return result;
}

console.log(gatherFeedback([
  ['feedback1', 10],
  ['feedback2', 3],
  ['feedback3', 6]
]))

票数 0
EN

Stack Overflow用户

发布于 2022-08-09 12:56:02

使用.length数组属性:

代码语言:javascript
复制
function gatherFeedback(feedbackArray) {

  let result = {
    positive: 0,
    negative: 0,
    neutral: 0
  };

  if (feedbackArray.length > 0) {
    for (let i = 0; i < feedbackArray.length; i++) {
      if (feedbackArray[i][1] >= 7) {
        result.positive++
      } else if (feedbackArray[i][1] <= 3) {
        result.negative++
      } else if (feedbackArray[i][1] > 3 && feedbackArray < 7) {
        result.neutral++
      }
    }
  }
  return result;
}

console.log(gatherFeedback([
  ['feedback1', 10],
  ['feedback2', 3],
  ['feedback3', 6]
]))
票数 0
EN

Stack Overflow用户

发布于 2022-08-09 12:57:28

将您的代码更改为

代码语言:javascript
复制
function gatherFeedback (feedbackArray) {
    let result = {positive: 0, negative: 0, neutral: 0};
    if(feedbackArray.length > 0){
        for(let i = 0; i < feedbackArray.length; i++) {
            if(feedbackArray[i][1] >= 7) {
                result.positive++
            } else if(feedbackArray[i][1] <= 3){
                result.negative++
            } else if (feedbackArray[i][1] > 3 && feedbackArray[i][1] < 7) {
                result.neutral++
            }
        }   
    }
    return result;
}  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73292063

复制
相关文章

相似问题

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