Javascript:用对象填充稀疏数组的简便方法

问题描述 投票:1回答:1

我正在使用数组存储对象(节点之间的有向边),并希望使用数组存储对象,以便可以使用数组的索引来引用对象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)

我接受所有解决方案。

javascript data-structures syntax
1个回答
-1
投票

[...Array(N)].map(() => ({trusts: {}, trusted: {}}));

仅需注意[...Array(N)]-这是javascript的怪异之处,但仅new Array(N)创建了一个大小为N的数组,但是具有empty值(它们既不是null也不是undefined,JavaScript确实有很多代表什么的方法...)。 .map方法将忽略这些empty,因此它无法正常工作。 [...Array(N)]创建一个undefined数组,您可以使用map进行迭代。

© www.soinside.com 2019 - 2024. All rights reserved.