javascript - d3.js : creating a nested array (matrix) from a flat array

标签 javascript d3.js matrix

我有一个对象数组节点,其中每个组件对象都有.id属性,我想创建一个方矩阵这是一个由 [id][id] 索引的嵌套数组,表示逐个节点的交互:

nodes.forEach(function(node, i) {
    matrix[node.id] = nodes.forEach(
        function(node1, j) {
            console.log(i,j);
            return {
                "x": j,
                "y": i,
                "z": 0
            };
    });
    console.log(i, matrix[node.id]);
});

在控制台中我得到:

...
149 1
...  
149 148  
149 149  
149 undefined

为什么表达式matrix[node.id] = ...中没有分配对象?为什么没有错误或警告?我该如何修复它?

<小时/>

更新:根据 @pilotcam 的解释,forEach 不返回值,我尝试了以下操作:

    var matrix = [];
var testnodes = [{id: "aaa", a:10},
                 {id: "aab", a:20},
                 {id: "aac", a:30},
                 {id: "aba", a:40}]

testnodes.forEach(function(node, i) {
    matrix[node.id] = [];
   // [{x: 1, y:2, z:0}, {x:2,y:3,z:0}];
    testnodes.forEach(
        function(node1, j) {
            matrix[node.id][node1.id] = {
                x: j,
                y: i,
                z: 0
            };
        console.log(i,j, node.id, node1.id, matrix[node.id][node1.id]);
    });
    console.log(i, matrix[node.id]);
});

我的矩阵仍然没有填充到内部循环中:

...
3 1 aba aab Object { x: 1, y: 3, z: 0 }
3 2 aba aac Object { x: 2, y: 3, z: 0 }
3 3 aba aba Object { x: 3, y: 3, z: 0 }
3 Array [  ]

最佳答案

javascript forEach 方法不返回值。你可能想做

matrix[node.id] = [];

...并在第二个 forEach 中对其进行操作。从提出的问题来看,我猜您想要这样的东西:

nodes.forEach(function(node, i) {
    matrix[node.id] = [];
    nodes.forEach(
        function(node1, j) {
            console.log(i,j);
            matrix[node.id][node1.id] = {
                "x": j,
                "y": i,
                "z": 0
            };
    });
    console.log(i, matrix[node.id]);
});

我修改了 fiddle 以循环遍历您的哈希表并表明它可能正在执行您想要的操作。 https://jsfiddle.net/rtxbzove/

关于javascript - d3.js : creating a nested array (matrix) from a flat array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43855845/

相关文章:

javascript - JQuery 创建一个滚动跟随 div

javascript - undefined 不是一个对象(评估 '_this2.props.navigation.navigate' ) onPress React-Native

javascript - Webpack 排除文件夹

javascript - 使用 slider 值动态更新 Javascript 中的条形图

java - Jama 包,4x4 线性方程求解器

c - MPI_Scatter and Gather - 二维数组,不均匀 block

javascript - 在nodejs中等待循环内的 promise

javascript - D3 网格中的力模拟

javascript - 在同一页面上实现多个 D3 布局

c++ - 带有目标相机的 C++ 3d vector/矩阵库的建议