转换javascript对象列表
我需要转换这些数据:转换javascript对象列表,javascript,arrays,json,object,javascript-objects,Javascript,Arrays,Json,Object,Javascript Objects,我需要转换这些数据: var data = [ {a : "fin", year: 1996, value: 1}, {a : "fin", year: 1997, value: 2}, {a : "fin", year: 1998, value: 3}, {a : "fin", year: 1999, value: 4}, {a : "swe", year: 1996, value: 5}, {a : "swe", year: 1997, value: 6}, {a : "swe
var data = [
{a : "fin", year: 1996, value: 1},
{a : "fin", year: 1997, value: 2},
{a : "fin", year: 1998, value: 3},
{a : "fin", year: 1999, value: 4},
{a : "swe", year: 1996, value: 5},
{a : "swe", year: 1997, value: 6},
{a : "swe", year: 1998, value: 7},
{a : "swe", year: 1999, value: 8}
]
为此:
var data = [
{a : "fin", years: [1996,1997,1998,1999], values: [1,2,3,4]},
{a : "swe", years: [1996,1997,1998,1999], values: [5,6,7,8]}
]
谢谢你的帮助 使用.filter()方法我们首先检查相关国家是否在“结果”数组中已经有一个对象,如果没有,我们推送一个格式化的对象,如果已经存在,我们使用.find()方法查找对象,并将年份和值推送到对象中的年份和值数组中
let result = [];
data.forEach(element => {
if (result.filter(obj => obj.a === element.a).length < 1) {
result.push({a : element.a, years: [element.year], values: [element.value]})
} else {
result.find(country => country.a === element.a).years.push(element.year)
result.find(country => country.a === element.a).values.push(element.value)
}
})
console.log(result);
let result=[];
data.forEach(元素=>{
if(result.filter(obj=>obj.a==element.a).length<1){
push({a:element.a,years:[element.year],values:[element.value]})
}否则{
result.find(country=>country.a==element.a).years.push(element.year)
result.find(country=>country.a==element.a).values.push(element.value)
}
})
控制台日志(结果);
使用.filter()方法我们首先检查相关国家是否在“结果”数组中已经有一个对象,如果没有,我们推送一个格式化的对象,如果已经存在,我们使用.find()方法查找对象,并将年份和值推送到对象中的年份和值数组中
let result = [];
data.forEach(element => {
if (result.filter(obj => obj.a === element.a).length < 1) {
result.push({a : element.a, years: [element.year], values: [element.value]})
} else {
result.find(country => country.a === element.a).years.push(element.year)
result.find(country => country.a === element.a).values.push(element.value)
}
})
console.log(result);
let result=[];
data.forEach(元素=>{
if(result.filter(obj=>obj.a==element.a).length<1){
push({a:element.a,years:[element.year],values:[element.value]})
}否则{
result.find(country=>country.a==element.a).years.push(element.year)
result.find(country=>country.a==element.a).values.push(element.value)
}
})
控制台日志(结果);
没有那么漂亮,但你会想到:
var data = [
{a : "fin", year: 1996, value: 1},
{a : "fin", year: 1997, value: 2},
{a : "fin", year: 1998, value: 3},
{a : "fin", year: 1999, value: 4},
{a : "swe", year: 1996, value: 5},
{a : "swe", year: 1997, value: 6},
{a : "swe", year: 1998, value: 7},
{a : "swe", year: 1999, value: 8}
]
var results = [];
data.forEach((item, i) => {
let exitingIndex = getPosition(item.a);
if (exitingIndex !== undefined) {
results[exitingIndex].year.push(item.year)
results[exitingIndex].value.push(item.value)
} else {
results.push({
a: item.a,
year: [item.year],
value: [item.value]
});
}
})
function getPosition(value) {
let res;
results.forEach((item, index) => {
if (item.a === value) {
res = index;
return;
}
})
return res;
}
console.log(results);
不是很漂亮,但你会想到:
var data = [
{a : "fin", year: 1996, value: 1},
{a : "fin", year: 1997, value: 2},
{a : "fin", year: 1998, value: 3},
{a : "fin", year: 1999, value: 4},
{a : "swe", year: 1996, value: 5},
{a : "swe", year: 1997, value: 6},
{a : "swe", year: 1998, value: 7},
{a : "swe", year: 1999, value: 8}
]
var results = [];
data.forEach((item, i) => {
let exitingIndex = getPosition(item.a);
if (exitingIndex !== undefined) {
results[exitingIndex].year.push(item.year)
results[exitingIndex].value.push(item.value)
} else {
results.push({
a: item.a,
year: [item.year],
value: [item.value]
});
}
})
function getPosition(value) {
let res;
results.forEach((item, index) => {
if (item.a === value) {
res = index;
return;
}
})
return res;
}
console.log(results);
检查这是否有效
let data = [
{ a: "fin", year: 1996, value: 1 },
{ a: "fin", year: 1997, value: 2 },
{ a: "fin", year: 1998, value: 3 },
{ a: "fin", year: 1999, value: 4 },
{ a: "swe", year: 1996, value: 5 },
{ a: "swe", year: 1997, value: 6 },
{ a: "swe", year: 1998, value: 7 },
{ a: "swe", year: 1999, value: 8 }
]
let groupByCountries = {};
data.forEach(country => {
if (!groupByCountries.hasOwnProperty(country.a)) {
groupByCountries[country.a] = {
years: [country.year],
values: [country.value]
}
}
else {
groupByCountries[country.a].years.push(country.year);
groupByCountries[country.a].values.push(country.value);
}
})
let combinedValues = []
Object.keys(groupByCountries).forEach(country => {
combinedValues.push({
a: country,
years: groupByCountries[country].years,
values: groupByCountries[country].values
})
})
//just for printing
combinedValues.forEach((country) => {
console.log(country)
})
let data = [
{ a: "fin", year: 1996, value: 1 },
{ a: "fin", year: 1997, value: 2 },
{ a: "fin", year: 1998, value: 3 },
{ a: "fin", year: 1999, value: 4 },
{ a: "swe", year: 1996, value: 5 },
{ a: "swe", year: 1997, value: 6 },
{ a: "swe", year: 1998, value: 7 },
{ a: "swe", year: 1999, value: 8 }
]
let groupByCountries = {};
data.forEach(country => {
if (!groupByCountries.hasOwnProperty(country.a)) {
groupByCountries[country.a] = {
years: [country.year],
values: [country.value]
}
}
else {
groupByCountries[country.a].years.push(country.year);
groupByCountries[country.a].values.push(country.value);
}
})
let combinedValues = []
Object.keys(groupByCountries).forEach(country => {
combinedValues.push({
a: country,
years: groupByCountries[country].years,
values: groupByCountries[country].values
})
})
//just for printing
combinedValues.forEach((country) => {
console.log(country)
})
检查这是否有效
let data = [
{ a: "fin", year: 1996, value: 1 },
{ a: "fin", year: 1997, value: 2 },
{ a: "fin", year: 1998, value: 3 },
{ a: "fin", year: 1999, value: 4 },
{ a: "swe", year: 1996, value: 5 },
{ a: "swe", year: 1997, value: 6 },
{ a: "swe", year: 1998, value: 7 },
{ a: "swe", year: 1999, value: 8 }
]
let groupByCountries = {};
data.forEach(country => {
if (!groupByCountries.hasOwnProperty(country.a)) {
groupByCountries[country.a] = {
years: [country.year],
values: [country.value]
}
}
else {
groupByCountries[country.a].years.push(country.year);
groupByCountries[country.a].values.push(country.value);
}
})
let combinedValues = []
Object.keys(groupByCountries).forEach(country => {
combinedValues.push({
a: country,
years: groupByCountries[country].years,
values: groupByCountries[country].values
})
})
//just for printing
combinedValues.forEach((country) => {
console.log(country)
})
let data = [
{ a: "fin", year: 1996, value: 1 },
{ a: "fin", year: 1997, value: 2 },
{ a: "fin", year: 1998, value: 3 },
{ a: "fin", year: 1999, value: 4 },
{ a: "swe", year: 1996, value: 5 },
{ a: "swe", year: 1997, value: 6 },
{ a: "swe", year: 1998, value: 7 },
{ a: "swe", year: 1999, value: 8 }
]
let groupByCountries = {};
data.forEach(country => {
if (!groupByCountries.hasOwnProperty(country.a)) {
groupByCountries[country.a] = {
years: [country.year],
values: [country.value]
}
}
else {
groupByCountries[country.a].years.push(country.year);
groupByCountries[country.a].values.push(country.value);
}
})
let combinedValues = []
Object.keys(groupByCountries).forEach(country => {
combinedValues.push({
a: country,
years: groupByCountries[country].years,
values: groupByCountries[country].values
})
})
//just for printing
combinedValues.forEach((country) => {
console.log(country)
})
我在实际问题中有多个国家。@vinkki我已更新解决方案,以便与任意数量的国家一起动态地将对象添加到结果数组中。我在实际问题中有多个国家。@vinkki我已更新解决方案,以便与任意数量的国家一起动态地将对象添加到结果数组中。这很好,非常感谢你的帮助。如果您找到更好的解决方案,请告诉我。:)对于lodash,它应该是一行,但我不知道在您的情况下是否值得为此添加一个库。这很有效,非常感谢您的帮助。如果您找到更好的解决方案,请告诉我。:)对于lodash,它应该是一行,但我不知道在您的情况下是否值得为此添加一个库。