给出二维数组 [[2,12],[3,12],[3,15],[5,15]] 。
>我想检查子数组的第一个元素是否等于邻居的第一个元素。如果它们相等,我想将它们的第二个元素相加,并用新数组替换这两个元素。
因此输出必须为: [[2,12],[3,27],[5,15]] 。
谢谢! 我已经尝试过常规的for循环,但是它抛出TypeError说无法访问undefined的值
nulls
答案 0 :(得分:0)
您可以使用reduce
检查accumulator
的最后一项与上下文中的当前项目是否具有相同的key
。如果是,则将value
部分相加。否则,将项目推送到accumulator
const data = [[2, 12], [3, 12], [3, 15], [5, 15]];
const newArray = data.reduce((acc, a, i) => {
if (i > 0 && a[0] === data[i-1][0])
acc[acc.length-1][1] += a[1]
else
acc.push(a);
return acc
}, [])
console.log(newArray)
上述逻辑使用三元和comma operators
const data = [[2, 12], [3, 12], [3, 15], [5, 15]];
const newArray = data.reduce((acc, a, i) => (
i > 0 && a[0] === data[i-1][0]
? acc[acc.length-1][1] += a[1]
: acc.push(a), acc), [])
console.log(newArray)
答案 1 :(得分:0)
您可以简化数组并为结果集中最后推送的元素获取一个辅助变量;
describe('Test Component using hooks', () => {
test('MyDiv', () => {
expect(<MyDiv/>).toMatchSnapshot();
})
});