基于另一个数组映射一个数组

Mapping an Array Based on Another Array

我正在做一个项目,如果其中一个嵌套数组的第一个索引在第二个数组中找到,我需要更改一个数组的值。例如:

数组一

[12345, [67890, 1], [09876, 2]]

数组二

[
   [
      180547,
      '180547 text',
      'more text',
      ...etc
   ], [
      67890,
      '67890 text',
      'more text',
      ...etc
   ],
   ...etc
]

我需要遍历 Array One 中的每个嵌套数组,并检查每个嵌套数组中的第一个值是否存在于 Array Two 中的任何数组中。从那里,我需要复制 Array Two 的数组,并替换 Array One.

中嵌套数组的第一个值

我知道这可能有点令人困惑,所以这里是上述数组的示例输出:

输出

[12345, [[67890, '67890 text', 'more text', ...etc], 1], [09876, 2]]

首选 ES6+,但不是必需的。

编辑:

如求必应-

抛开函数行话,这是我自己想出的最好的:

  gid.steal()
    .then(dataset => {
      let o = dataset.forEach(group => {
        group.map((person, i) => {
          i === 0 ? person : rows.forEach(row => {
            row[0] === person[0] && row[row.length - 1] === '-3' ? [row, person[1]] : null
          })
        })
      })

      console.log(o)
    })
    .catch(err => rej(err))
//dataset would be Array One and rows would be Array Two

这个returnsundefined

我有一种感觉,我要么试图对它太过complicated/clever,要么我完全超出了这个方法的范围。

想通了。事实证明,我肯定是想变得比我需要的更复杂。我只需要一些简单的地图和一个过滤器。

let arr1 = [
 ['john', 1, 2, 3, 4, '5'],
 ['jane', 1, 2, 3, 4, '5'],
 ['jane', 1, 2, 3, 4, '-3'],
 ['joe', 1, 2, 3, 4, '-3']
]

let arr2 = [
 ['number', ['jane', 1]]
]

const fx = data => {
 return data.map(s => {
  return s.map((t, u) => {
   return u === 0
    ? t
    : [arr1.filter(v => v[0] === t[0] && v.indexOf('-3') >= 0)[0], t[1]]
  })
 })
}

console.log(fx(arr2))