好吧,我真的不知道这里发生了什么。我假设它是某种参考问题?但我不知道如何解决它或导致它的原因。
总而言之,我有一个对象列表,以及一个预先填充的对象,以确保我拥有该对象中所有键的数据。
我需要遍历这个对象列表,并通过使用元数据对象中的 timeframeId 和数据对象中的 id,我想将整个数据对象分配给预填充对象中相应的 timeframeId 和 id 层次结构。
出于某种原因,所有data
属性都被覆盖到最后一行data
。
但是我的代码如下:
const buildSegmentsFromRows = (rows, timeframeMetadata, defaultSegmentData) => {
// Prepopulate object to make sure every timeframe has a 'hello' key in it with some data
const emptySegments = timeframeMetadata.reduce((segmentMap, metadata) => {
segmentMap[metadata.timeframeId] = {
metadata,
segments: defaultSegmentData,
};
return segmentMap;
}, {});
// Now simply just loop over the rows, and set [row.metadata.timeframeId].segments[row.data.id] to row.data
const segments = rows.reduce((partialSegments, row) => {
const { timeframeId } = row.metadata;
const { id } = row.data;
/**
* This is the line where everything goes wrong
*/
partialSegments[timeframeId].segments[id] = row.data;
return partialSegments;
}, emptySegments);
return segments;
};
const rows = [
{
metadata: { timeframeId: '20202_01' },
data: {
'id': 'hello', 'value': 15
}
},
{
metadata: { timeframeId: '20202_02' },
data: {
'id': 'hello', 'value': 10
}
}
]
const timeframemetadata = [
{ timeframeId: '20202_01'},
{ timeframeId: '20202_02'}
]
const defaultSegmentData = {
'hello': {
'id': 'hello',
}
}
console.log(JSON.stringify(buildSegmentsFromRows(rows, timeframemetadata, defaultSegmentData), null, 2))
但是相反,在所有情况下value
都设置为。10
我在想这是因为我们将属性设置为row.data
,这是一个参考,并且在每次调用时都会更新?但我在这里完全不知所措。
素胚勾勒不出你
相关分类