TypeScript 对象显示所有已定义的值,但随后返回的值未定义

问题描述

我正在尝试使用 for 循环在 typeScript 中动态定义一个对象。

这是代码

        var n = 7 
        interface LooSEObject {
            [key: string]: any
        }
        var boardValues: LooSEObject = {}
        for (var i = 0; i <= n; i++){
            for(var j = 0; j <= n; j++){
                var boardindex = 8*(n-i)+j
                boardValues[`n${boardindex}`] = `n${boardindex}`
                console.log("generating boardValues",boardValues[`n${boardindex}`]) //outputs the expected result e.g. n15
            }
        }

Here is a gif showing the output

在运行循环时,console.log 给出了预期的输出(例如 n7)。但是,当我将创建的 boardValues 对象输出到控制台时,只定义了 n16 到 n47。更奇怪的是,chrome 显示正确定义的值,直到我展开对象以查看所有值,然后将它们显示为未定义。

我做错了什么? (我是 typeScript 的新手,不擅长编程,很抱歉我的做法不好)

解决方法

我认为你的代码工作正常,只是 boardValues 属性没有排序(例如 n50 可能是显示的第一个键,而 n7 可能在中间);

要查看所有设置的键,请尝试:

console.log(Object.keys(boardValues).sort((a,b)=>Number(a.slice(1))-Number(b.slice(1))))