gpt4 book ai didi

javascript - 在 Javascript 中获取键的属性

转载 作者:行者123 更新时间:2023-11-30 19:31:41 25 4
gpt4 key购买 nike

我有一个 key/value 数组,我通过执行类似于以下操作来定义它:

var arr;

function assign(iSize, jSize)
{
arr = {};

for (var i = 0; i < iSize; i++) {
for (var j = 0; j < jSize; j++) {
var pt = new Point(i, j);
arr[pt] = [1, 2, 3];
}
}
}

我的 Point 函数在哪里

function Point(x, y) {
this.x = x;
this.y = y;
}

现在我想遍历数组的所有值,但我还需要知道键。我试过了

function iterate() {
for(var e in arr) {
console.log(e.x);
}
}

但它只是打印出undefined。另外,如果我尝试

function iterate() {
console.log(Object.keys(arr));
}

我只是将 [object Object] 作为输出。

我已经尝试在创建时打印出 Point 并且我可以很好地访问 xy 值。

附带说明一下,在我的实际实现中,我不只是将数组 [1, 2, 3] 分配给数组的每个索引。我正在分配一个由另一个函数生成的数组,该函数与访问 arr

中的键无关

最佳答案

所有对象都是字符串symbol .因此,当您尝试将一个 object 用作另一个 objectkey 时,它会被强制转换为字符串 [object object] 使用 toString()方法。您可以在下一个示例中检查它:

let obj = {a: "something"};
console.log(obj.toString());
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

您想要做的事情的一个解决方案是使用 Map

The keys of an Object are String and Symbol, whereas they can be any value for a Map, including functions, objects, and any primitive.

Map 示例

function Point(x, y)
{
this.x = x;
this.y = y;
}

var arr;

function assign(iSize, jSize)
{
arr = new Map();

for (var i = 0; i < iSize; i++)
{
for (var j = 0; j < jSize; j++)
{
var pt = new Point(i, j);
arr.set(pt, [1, 2, 3]);
}
}
}

function iterate()
{
arr.forEach((val, key) =>
{
console.log("key => ", JSON.stringify(key), " val => ", JSON.stringify(val));
});
}

assign(2, 2);
iterate();

另一种解决方案是将 toString() 方法添加到您的 Point 类中,以避免调用 Object.prototype.toString() 方法,正如解释的那样here :

toString() 示例

function Point(x, y)
{
this.x = x;
this.y = y;
}

// New toString() method for the Point class.

Point.prototype.toString = function()
{
return `(${this.x},${this.y})`;
}

var arr;

function assign(iSize, jSize)
{
arr = {};

for (var i = 0; i < iSize; i++)
{
for (var j = 0; j < jSize; j++)
{
var pt = new Point(i, j);
arr[pt] = [1, 2, 3];
}
}
}

function iterate()
{
for (const key in arr)
{
console.log("key => ", key, " val => ", JSON.stringify(arr[key]));
}
}

assign(2, 2);
iterate();
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

关于javascript - 在 Javascript 中获取键的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56364571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com