我正在使用数组存储对象(节点之间的有向边),并希望使用数组存储对象,以便可以使用数组的索引来引用对象ID。
/**
* @param {number} N
* @param {number[][]} trust
* @return {number}
*/
var findJudge = function(N, trust) {
let nodes = [
{
trusts: {},
trustedBy: {}
}
]
trust.forEach(pair => {
nodes[pair[0]].trusts = pair[1]
nodes[pair[1]].trusted = pair[0]
})
return -1
};
代码抛出错误,因为元素节点[pair [1]]显然不存在。
我想避免在N确实很大的情况下用空值预填充数组。也许这不是用于填充稀疏邻接表的适当数据结构。有没有办法说var x = new Array(of type object, of length N)
?
我接受所有解决方案。
[...Array(N)].map(() => ({trusts: {}, trusted: {}}));
仅需注意[...Array(N)]
-这是javascript的怪异之处,但仅new Array(N)
创建了一个大小为N的数组,但是具有empty
值(它们既不是null
也不是undefined
,JavaScript确实有很多代表什么的方法...)。 .map
方法将忽略这些empty
,因此它无法正常工作。 [...Array(N)]
创建一个undefined
数组,您可以使用map
进行迭代。