当前位置: 首页 > 知识库问答 >
问题:

TypeError:无法读取未定义的属性“score”

韦繁
2023-03-14

我知道有类似的问题,包括不能读取属性'分数'的未定义,但他们有<代码>如果(类型的结果[i 1]!='未定义'

var gamesArray = [
      { name: 'Edward', score: 21, rank: 0 },
      { name: 'Sharpe', score: 37, rank: 0 },
      { name: 'And', score: 45, rank: 0 },
      { name: 'The', score: 12, rank: 0 },
      { name: 'Magnetic', score: 3, rank: 0 },
      { name: 'Zeros', score: 37, rank: 0 }
    ];

    var sorted = gamesArray.sort(function(a,b){return b.score-a.score});
    // console.log (sorted);
    // [ { name: 'And', score: 45, rank: 0 },
    //   { name: 'Sharpe', score: 37, rank: 0 },
    //   { name: 'Zeros', score: 37, rank: 0 },
    //   { name: 'Edward', score: 21, rank: 0 },
    //   { name: 'The', score: 12, rank: 0 },
    //   { name: 'Magnetic', score: 3, rank: 0 } ]

    function rank(array) {

      var firstArray = array;
      var rankedArray = [];
      var counter = 0;

      while (firstArray.length > 0) { 

        //.shift removes the first slot of array and returns it
        var game = firstArray.shift();

        if (rankedArray.length == 0) {
          game.rank = 1;
          rankedArray.push(game);    
          game = null;
          counter += 1;

        } else {
          if (game.score == rankedArray[counter - 1].score) {
            game.rank = rankedArray[counter - 1].rank;
            counter += 1;
          } else {
            game.rank = rankedArray[counter - 1].rank + 1;
            counter += 1;
          };
        };

      };
      return rankedArray;
    };

    rank(gamesArray);

运行此命令时出现的错误是

   if (game.score == rankedArray[counter - 1].score) {
                                            ^
   TypeError: Cannot read property 'score' of undefined

共有3个答案

申辉
2023-03-14

循环1:被推入rankedArray,排名1计数器增长。

现在:firstArray。长度为5,rankedArray。长度为1,计数器为1

loop2:Sharpe正在使用秩2进行修改,不推动,计数器增长。

现在:第一个数组。长度是4,兰克达雷。长度为1,计数器为2

循环3:尝试访问rankedArray[计数器-1]。得分,现在等于rankedArray[1]。得分。但是rankedArray只包含一个元素。

SO:rankedArray[1]未定义,BOOM~~~

施自怡
2023-03-14

首先,不应该在循环中直接使用长度。

第二个错误是由于计数器增加,即使数组中只有第一个游戏推送:)

我假设它发生在第三次迭代中,在第一次迭代中,游戏被推到第二次,在第三次迭代中它被检查,它试图找到一些不存在的东西(索引1)

齐磊
2023-03-14

问题是,您只在第一次迭代时推动游戏。我已经在下面的代码中标记了移动的行。

var gamesArray = [
      { name: 'Edward', score: 21, rank: 0 },
      { name: 'Sharpe', score: 37, rank: 0 },
      { name: 'And', score: 45, rank: 0 },
      { name: 'The', score: 12, rank: 0 },
      { name: 'Magnetic', score: 3, rank: 0 },
      { name: 'Zeros', score: 37, rank: 0 }
    ];

    var sorted = gamesArray.sort(function(a,b){return b.score-a.score});
    // console.log (sorted);
    // [ { name: 'And', score: 45, rank: 0 },
    //   { name: 'Sharpe', score: 37, rank: 0 },
    //   { name: 'Zeros', score: 37, rank: 0 },
    //   { name: 'Edward', score: 21, rank: 0 },
    //   { name: 'The', score: 12, rank: 0 },
    //   { name: 'Magnetic', score: 3, rank: 0 } ]

    function rank(array) {

      var firstArray = array;
      var rankedArray = [];
      var counter = 0;

      while (firstArray.length > 0) { 

        //.shift removes the first slot of array and returns it
        var game = firstArray.shift();

        if (rankedArray.length == 0) {
          game.rank = 1;
          counter += 1;
        } else {
          if (game.score == rankedArray[counter - 1].score) {
            game.rank = rankedArray[counter - 1].rank;
            counter += 1;
          } else {
            game.rank = rankedArray[counter - 1].rank + 1;
            counter += 1;
          };
        };

        // Moved line
        rankedArray.push(game);
      };
      return rankedArray;
    };

    rank(gamesArray);
 类似资料:
  • 如果函数在组件中,那么一切都很好。如果我把它单独取出并导出到一个组件中,那么我会得到一个错误TypeError:不能读取未定义的属性(读取'reduce')

  • 问题内容: 我试图在ajax回调从REST api接收数据后设置组件的setState。这是我的组件构造函数代码 然后,我有一个如下所示的方法。 现在,这是我执行getAJAX请求的getPosts函数。 我想设置状态,但出现以下错误。 不太清楚是什么原因造成的。如果有人指出我正确的方向,那将真的很有帮助。提前致谢。 问题答案: 还绑定回调函数,以便回调内部指向React Component的上下

  • 我试图使用node.js express web服务器中的@tensorflow/tfjs-node模块。但是,我得到了下面的错误。我不明白为什么我会出现这个错误。我刚刚在node.js服务器中添加了1行代码。我使用“npm install@tensorflow/tfjs-node”完成的安装。可能的问题是什么? null 先谢谢你, var nonMaxSuppressionV3Impl=tf.

  • 我正在尝试联系许多对许多,在两个模式“培训和培训课程”,所以我做了第三个模式“课程”,以尝试关系1对许多。但是我得到了一个错误: null TypeError:无法读取对象上未定义得属性“belongsto”。(c:UsersDellDownloadsGraphql-12.18.2020Graphql-12.18.2020Graphql-12.18.2020ServerAppDatabaseDat

  • 上面的函数返回一个类似“failed”的字符串。但是,当我尝试在其上运行then函数时,它将返回 并且光标指示在之后和。 下面是完整的功能: 更新 下面是函数 我确信将导致一个“failed”字符串。没别的了。

  • 无法显示Barchart。 我有一个包含数据的表,它是可拖动的。在表格旁边我有一个两个dropbox被拖动的表格中的数据可以被拖动到框中。当将数据拖动到框中时,应该会显示条形图。 这是我的家。component.html 这是我的家。Component.TS 这是我的酒吧 在拖放数据时,特定的图表必须显示在Dropbox上。