JavaScript中具有对象键的数组

JavaScript中具有对象键的数组,javascript,Javascript,如何创建键作为对象(类实例)的数组 我正在尝试做一些类似的事情: const parent = {}; while (child !== undefined) { for (const element of list) { parent[element] = child; } child = child.next; } 这基本上就是这个想法;如果元素是字符串,代码就可以工作,但是如果元素是对象,代码就不能正常工作 你不能.toString()在用作键之

如何创建键作为对象(类实例)的数组

我正在尝试做一些类似的事情:

const parent = {};

while (child !== undefined) {
    for (const element of list) {
        parent[element] = child;
    }
    child = child.next;
}
这基本上就是这个想法;如果元素是字符串,代码就可以工作,但是如果元素是对象,代码就不能正常工作

你不能
.toString()
在用作键之前,对作为键传递给对象的任何对象调用。这是Javascript语言规范的一部分


但是,如果需要,您可以创建对象键,但符号仅将字符串作为参数。

这不起作用,因为将调用方法
toString()
为所有项目返回类似
[object object]
的内容

属性名称只能是字符串,但可以是任何字符串。。。您可以使用
JSON.stringify(element)
将对象转换为字符串,但您不能像使用对象那样使用键值,因为它只是对象的一个表示形式

另一个解决方案(也许更好?)是在类上有一个函数,用于创建对象的字符串表示形式。。。假设您的对象来自数据库,您可以使用记录ID。您也可以使用一些随机字符串来实现它的价值


如果我知道为什么要首先将对象存储为密钥,我将能够为您提供更好的解决方案。

如果您在ES2015环境中,可以使用

它看起来是这样的:

let parent = new Map();
while (child !== undefined) {
    for (const element of list) {
        parent.set(element, child);
    }
    child = child.next;
}
您可以在这个示例中运行下面的示例

或者将其视为堆栈片段

(函数($){
常量元素={
$h1:$(“#你好”),
$container:$(“#container”)
};
让parent=newmap();
常量KEY1={};
set(键1,'hello');
console.log(parent.get(KEY1));//您好
常量KEY2={};
set(键2,“世界”);
log(parent.get(KEY2));
parent.set('est'{
a:‘a’
});
console.log(parent.get('est'));
/**问题w地图的原始代码**/
var list=[];//以防止错误
让parenta=newmap();
让孩子;
while(子项!==未定义){
for(列表的常量元素){
parenta.set(元素,子元素);
}
child=child.next;
}
})(jQuery)


你说的“非变量”是什么意思?我编辑了它。我的意思是对象(我创建的类的实例)而不是字符串、int等类型的变量。你的问题很模糊。您可能应该尝试使用示例和所需的答案来清楚地解释您正在努力解决的问题。@Piyushhanna使用
[]
而不是
新数组()
您可以使用
贴图
我需要使用BFS找到两个顶点之间的最短路径。所以,我尝试实现的是使用BFS让每个顶点的父节点,然后找到最短路径:parent[destination]、parent[parent[destination]],等等,直到我到达源顶点。请注意,顶点是一个对象,所以目标和源是Vertexa简单ID类型的对象,然后可以工作。。。但我认为你们应该重新思考你们的课程,提供一个更好的方式来完成它。是的,我正在使用ES2015环境。我会尝试使用mapJosh保龄球,很好的答案。我冒昧地将代码笔嵌入到堆栈片段中。谢谢!我以后也会考虑使用它们。
let parent = new Map();
const KEY1 = {};
parent.set(KEY1, 'hello');
console.log(parent.get(KEY1)); // hello

const KEY2 = {};
parent.set(KEY2, 'world');
console.log(parent.get(KEY2));

parent.set('est', {a: 'a'});
console.log(parent.get('est'));