基于另一个阵列映射一个阵列

时间:2018-10-01 19:38:49

标签: javascript arrays array.prototype.map

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

第一个阵列

[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

这将返回undefined

我有一种感觉,我正在尝试使其变得过于复杂/巧妙,或者在这种方法上我完全超出了范围。

1 个答案:

答案 0 :(得分:0)

弄清楚了。事实证明,我绝对想变得比我需要的复杂。我只需要一些简单的地图和过滤器。

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))