问题描述
我正在尝试使用 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))))