基于另一个数组映射一个数组
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))
我正在做一个项目,如果其中一个嵌套数组的第一个索引在第二个数组中找到,我需要更改一个数组的值。例如:
数组一
[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))