JavaScript将两个数组组合成一个对象
我有两个数组,JavaScript将两个数组组合成一个对象,javascript,arrays,Javascript,Arrays,我有两个数组,slicesRank和slicescont,结构如下。每个元素都有id和value,这是一个46的数组。值由日期和度量值组成 e、 g.sliceRank[0]: {id:Catan=rank,values(数组(46)):{date,measurement}} e、 g.切片计数[0]: {id:Catan=count,value(数组(46)):{date,measurement}} 如果要将id名称中具有相同前缀的元素组合在一起,该怎么办。例如,这两个数组中的第一个元素 理想
slicesRank
和slicescont
,结构如下。每个元素都有id和value,这是一个46的数组。值由日期和度量值组成
e、 g.sliceRank[0]
:
{id:Catan=rank,values(数组(46)):{date,measurement}}
e、 g.切片计数[0]
:
{id:Catan=count,value(数组(46)):{date,measurement}}
如果要将id名称中具有相同前缀的元素组合在一起,该怎么办。例如,这两个数组中的第一个元素
理想的结构是
{id:Catan,value(数组(46)):{date,count,rank}}
我尝试了以下操作,但是值显示为未定义
for(i=0; i<slicesRank.length; i++) {
var newElement = {};
newElement['id'] = slicesRank[i].id.replace('=rank', '');
newElement['values'] = {
date: slicesRank[i].date,
rank: slicesRank[i].measurement,
count: slicesCount[i].measurement
};
sliceNew.push(newElement);
};
对于(i=0;i按片,我想你指的是数组
const combinedArray=sliceRank.map((sliceItem,itemIndex)=>{
返回{
身份证件
值:sliceItem.values.map({date,measurement},valueIndex)=>({
日期,
计数:切片计数[itemIndex][valueIndex]。度量,
等级:测量,
}))
}
})
此解决方案返回一个使用sliceRank
和sliceCount
组合的对象数组。因此,现在每个数组项都包含结构{date,count,rank}
的值。map
是不可变的,因此两个片都是相同的。按片,我想你的意思是数组
const combinedArray=sliceRank.map((sliceItem,itemIndex)=>{
返回{
身份证件
值:sliceItem.values.map({date,measurement},valueIndex)=>({
日期,
计数:切片计数[itemIndex][valueIndex]。度量,
等级:测量,
}))
}
})
此解决方案返回一个使用sliceRank
和sliceCount
组合的对象数组。因此,现在每个数组项都包含结构{date,count,rank}
的值。map
是不可变的,因此两个切片将是相同的。下面是一个示例转换,您可以尝试:
const combined = slicesRank.map((rank) => {
const id = rank.id.replace("=rank", "");
const count = slicesCount.find(
(count) => count.id.replace("=count", "") === id
);
return {
id,
values: rank.values.map((val, index) => ({
date: val.date,
rank: val.measurement,
count: count?.values[index].measurement
}))
};
});
这里有一个有效的例子
以下是一个示例转换,您可以尝试:
const combined = slicesRank.map((rank) => {
const id = rank.id.replace("=rank", "");
const count = slicesCount.find(
(count) => count.id.replace("=count", "") === id
);
return {
id,
values: rank.values.map((val, index) => ({
date: val.date,
rank: val.measurement,
count: count?.values[index].measurement
}))
};
});
这里有一个有效的例子
你可以试试这个
let sliceRank=[{id:“Catan=rank”,值:[{“date”:“10/10/2020”,“measurement”:120}];
让sliceCount=[{id:“Catan=count”,值:[{“date”:“10/10/2020”,“measurement”:20}]};
设newData=[];
常量数据=sliceRank.map((切片,切片索引)=>{
返回{
id:slice.id.split(“=”[0],
值:slice.values.map({date,measurement},valueIndex)=>({
日期,
等级:测量,
计数:切片计数[sliceIndex].values.map(r=>r.measurement)[0],
}))
}
})
console.log(数据);
您可以试试这个
let sliceRank=[{id:“Catan=rank”,值:[{“date”:“10/10/2020”,“measurement”:120}];
让sliceCount=[{id:“Catan=count”,值:[{“date”:“10/10/2020”,“measurement”:20}]};
设newData=[];
常量数据=sliceRank.map((切片,切片索引)=>{
返回{
id:slice.id.split(“=”[0],
值:slice.values.map({date,measurement},valueIndex)=>({
日期,
等级:测量,
计数:切片计数[sliceIndex].values.map(r=>r.measurement)[0],
}))
}
})
log(数据);
{id:Catan=rank,value(数组(46)):{date,measurement}
语法无效。不清楚您使用的数据结构is@CertainPerformance您好,很抱歉这里造成的任何混乱。我是JS新手。我在这里添加了两个屏幕截图,试图显示slicesRank
的结构,这会有帮助吗?{id:Catan=rank,values(Array(46)):{date,measurement}
语法无效。不清楚您使用的数据结构is@CertainPerformance您好,很抱歉给您带来任何混乱。我是JS新手。我在这里添加了两个屏幕截图,试图显示slicesRank
的结构,这会有帮助吗?