英文:
How to combine 2 or more API sources into one table (React, HTML)
问题
所以我有3个API来源,以这种格式返回数据
firstSource = [{month, endDate, expectedPrice}] ->12个对象的数组
secondSource = [{month, value}] ->12个对象的数组
thirdSource = [{month, value}] ->12个对象的数组
例子:
secondSource = [
{month: 1, value: 234.22},
{month: 2, value: 123.58},
{month: 3, value: 255.35},
...
...
你明白我的意思吧
]
我找到了这个解决方案,它使用了lodash库。这都很好,但我对一个不需要外部库的解决方案感兴趣。所以基本上,我想要达到与lodash解决方案中的人相同的目标 -> 将所有三个数据源合并到一个数据源中,然后使用它来在<table>
元素中显示数据,只是不使用外部库,如lodash。
期望的输出:
combined = [
{month, endDate, expectedPrice, secondSourceValue, thirdSourceValue}
]
有什么想法?
英文:
So I have 3 API sources that return data in this format
firstSource = [{month, endDate, expectedPrice}] ->array of 12 objects
secondSource = [{month, value}] ->array of 12 objects
thirdSource = [{month, value}] ->array of 12 objects
example:
secondSource = [
{month: 1, value: 234.22},
{month: 2, value: 123.58},
{month: 3, value: 255.35},
...
...
you get the idea
]
I've come across this solution that uses lodash library. This is all well, but I'm interested in a solution that doesn't require external libraries. So basically, I want to achieve the same thing the person from the lodash solution did -> combine all three data sources into one and then use that to display the data in <table>
element, only without using external libraries, e.g. lodash.
Expected output:
combined = [
{month, endDate, expectedPrice, secondSourceValue, thirdSourceValue}
]
Any ideas?
答案1
得分: 1
你只需检查第二个和第三个来源的长度是否与主要来源相同。
英文:
what's the problem to try something like this?
let combinedData = []
firstSource.forEach((element, index) => {
combinedData[index] = {
month: element.month,
endDate: element.endDate,
expectedPrice: element.expectedPrice,
secondSourceValue: secondSource[index].value,
thirdSourceValue: thirdSource[index].value
}
});
You only have to check if the second and third sources have the same length with the main.
答案2
得分: 0
我们可以使用 array.map
来合并多个对象数组,并创建一个包含所有对象属性的新数组。
需要注意的是,在这种情况下,所有数组的长度应该是相同的。
以下是 JavaScript 代码示例:
let arr1 = [
{
month: 1,
value: 234.22,
date: 'JAN'
},
{
month: 2,
value: 123.58,
date: 'FEB'
},
{
month: 3,
value: 255.35,
date: 'MARCH'
}
]
let arr2 = [
{
month: 1,
property: 1
},
{
month: 2,
property: 2
},
{
month: 3,
property: 3
}
]
let arr3 = [
{
month: 1,
property: 9
},
{
month: 2,
property: 8
},
{
month: 3,
property: 7
},
]
let combinedArr = arr1.map((item, index) => {
return {
...item,
...arr2[index],
...arr3[index]
}
})
console.log(combinedArr)
这段代码会将 arr1
、arr2
和 arr3
的对象数组合并为一个新的数组 combinedArr
,每个对象包含来自所有原始数组的属性。
英文:
We can use array.map
to merge multiple arrays of objects and create a new array with properties of all objects.
Do note that, in this case, the length of all the arrays should be the same.
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-js -->
let arr1 = [{
month: 1,
value: 234.22,
date: 'JAN'
},
{
month: 2,
value: 123.58,
date: 'FEB'
},
{
month: 3,
value: 255.35,
date: 'MARCH'
}
]
let arr2 = [{
month: 1,
property: 1
},
{
month: 2,
property: 2
},
{
month: 3,
property: 3
}
]
let arr3 = [{
month: 1,
property: 9
},
{
month: 2,
property: 8
},
{
month: 3,
property: 7
},
]
let combinedArr = arr1.map((item, index) => {
return {
...item,
...arr2[index],
...arr3[index]
}
})
console.log(combinedArr)
<!-- end snippet -->
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论