我正在一个项目中,如果在第二个数组中找到其嵌套数组之一的第一个索引,则需要更改一个数组的值。例如:
第一个阵列
[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
我有一种感觉,我正在尝试使其变得过于复杂/巧妙,或者在这种方法上我完全超出了范围。
答案 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))