首页 > 解决方案 > 如何从数组中提取两列

问题描述

我正在尝试提取一个二维数组。nodes对象看起来像这样

在此处输入图像描述

我试图用这个来实现它,但它没有用。

      var array_nodes = nodes.forEach(function(d) {
        return {
          x: d.x,
          y: d.y
        }
      })

我还尝试了地图功能。

  const mappy = nodes.map(d => {d.x, d.y})

我想得到一个包含两列的数组的输出,每个节点的 x 和 y 值。

0: Object { id: "node1", x: 329, y: 20.71054741336845, … }
1: Object { id: "node2", x: 457, y: 20.500184787737467, … }
2: Object { id: "node3", x: 456, y: 20.046762733706277, … }
3: Object { id: "node4", x: 223, y: 20.233158455720663, … }
4: Object { id: "node5", x: 600, y: 20.73422744297443, … }
5: Object { id: "node6", x: 216, y: 20.149308369154657, … }
6: Object { id: "node7", x: 16, y: 20.923145168399262, … }
7: Object { id: "node8", x: 79, y: 20.169662471673142, … }
8: Object { id: "node9", x: 134, y: 20.453715006408252, … }
9: Object { id: "node10", x: 283, y: 20.29360719627542, … }
10: Object { id: "node11", x: 303, y: 20.551183989352833, … }
11: Object { id: "node12", x: 181, y: 20.064410948103237, … }
12: Object { id: "node13", x: 5, y: 20.959524666896623, … }
13: Object { id: "node14", x: 31, y: 20.717166269835687, … }
14: Object { id: "node15", x: 355, y: 20.355608232712868, … }
15: Object { id: "node16", x: 347, y: 20.066870342302153, … }
16: Object { id: "node17", x: 268, y: 20.2596178070026, … }
17: Object { id: "node18", x: 551, y: 20.47176940601551, … }
18: Object { id: "node19", x: 332, y: 20.714532083737808, … }
19: Object { id: "node20", x: 378, y: 20.349455393068677, … }
20: Object { id: "node21", x: 389, y: 20.171878106179093, … }
21: Object { id: "node22", x: 297, y: 20.051874061965517, … }
22: Object { id: "node23", x: 621, y: 20.216442671836216, … }
23: Object { id: "node24", x: 303, y: 20.74488014708312, … }
24: Object { id: "node25", x: 391, y: 20.181878674813944, … }
25: Object { id: "node26", x: 587, y: 20.67429664437234, … }
26: Object { id: "node27", x: 148, y: 20.432642002410144, … }
27: Object { id: "node28", x: 288, y: 20.3834012779357, … }
28: Object { id: "node29", x: 529, y: 20.82920251612347, … }
29: Object { id: "node30", x: 408, y: 20.672034499272367, … }
30: Object { id: "node31", x: 647, y: 20.850401225681374, … }
31: Object { id: "node32", x: 9, y: 20.435299150057993, … }
32: Object { id: "node33", x: 575, y: 20.646578126575864, … }
33: Object { id: "node34", x: 112, y: 20.18210449698722, … }
34: Object { id: "node35", x: 117, y: 20.969084330614713, … }
35: Object { id: "node36", x: 220, y: 20.05520101130187, … }
36: Object { id: "node37", x: 118, y: 20.682034426408872, … }
37: Object { id: "node38", x: 224, y: 20.511227921536882, … }
38: Object { id: "node39", x: 18, y: 20.115342359997282, … }
39: Object { id: "node40", x: 299, y: 20.355577802084625, … }

标签: javascriptarraysextractmap-function

解决方案


nodes如果我理解正确,您想从输入数据创建一个嵌套数组(即二维数组)的数组。这可以通过以下方式实现:

/* Mock nodes data with the relevant x and y properties per item */
const nodes = [{
    id: 1,
    x: 0.4,
    y: 0.72
  },
  {
    id: 2,
    x: 0.5,
    y: 0.42
  },
  {
    id: 3,
    x: 0.13,
    y: 0.12
  },
  {
    id: 4,
    x: 0.33,
    y: 0.9
  }
];

/* Map each item of nodes to a nested array where each is a row of two columns */
const twoDimensionalArray = nodes.map((node) => [node.x, node.y]);

console.log(twoDimensionalArray)

这个答案和你对map()函数的使用之间的区别在于,这里的 map 回调返回括号中的数据,[]而不是{}括号中的数据。

使用[]括号会导致 map 回调的返回类型是一个数组,而{}大括号会导致 map 回调的返回类型是一个对象。通过使用[]括号返回数据,我们获得了所需的二维数组(即嵌套数组的数组)。


推荐阅读