у меня есть 1 массив javascript. я хотел объединить этот массив на основе дат, получить каждую цену и ввести в поле. Однако цена, которую я получаю, равна 1. Другая цена с той же датой не печатается. Может ли кто-нибудь помочь мне, почему? Спасибо
Вот код:
Javascript:
var data = [
{
"date":"2010-01-01",
"name":"a"
},
{
"date":"2010-02-01",
"name":"b"
},
{
"date":"2010-03-01",
"name":"c"
},
{
"date":"2010-01-01",
"name":"aa"
},
]
var result1 = data.reduce((p, c) =>
(p[c.date] = Object.assign({},{name: null}, p[c.date], c)) && p
, {});
var final = Object.keys(result1).map(x=>result1[x])
console.info(final)
Вы можете получить доступ к коду здесь:
https://jsfiddle.net/q0wn2vuo/
Я хочу, чтобы вывод был таким:
[{ дата: "2010-01-01", имя: 'а, аа', }, { дата: "2010-02-01", имя: 'б', }, { дата: "2010-03-01", цена: 'с', }]
извините '30,45' это результат, который я хочу
Итак, вам нужны строки, когда цены объединяются, а числа в противном случае? (звучит немного странно)
эти данные только образец. я хочу объединить имя данных на самом деле. подождите, позвольте мне сначала отредактировать код. прости
я уже редактирую свой пост. очень жаль
var data = [
{
"date":"2010-01-01",
"name":"a"
},
{
"date":"2010-02-01",
"name":"b"
},
{
"date":"2010-03-01",
"name":"c"
},
{
"date":"2010-01-01",
"name":"aa"
},
]
const resultSet = {};
for (let i = 0, _len = data.length; i < _len; i++ ) {
if (resultSet[data[i].date]){
resultSet[data[i].date] += ","+data[i].name
}
else{
resultSet[data[i].date] = data[i].name
}
}
const resultArr = Object.entries(resultSet).map(([key,value])=>{
return { date: key, name: value }
})
console.info(resultArr)
пытаться:
var data = [
{
"date":"2010-01-01",
"name":"a"
},
{
"date":"2010-02-01",
"name":"b"
},
{
"date":"2010-03-01",
"name":"c"
},
{
"date":"2010-01-01",
"name":"aa"
},
]
var result1 = data.reduce((accum, curr) => {
if (!accum[curr.date]) {
return {...accum, [curr.date]: [curr.name] }
}
return {...accum, [curr.date]: [...accum[curr.date], curr.name] }
}, {})
var final = Object.keys(result1).map(date => ({
date: date,
name: result1[date].join(',')
}))
console.info(final)
Что вы имеете в виду под
price: 30 45
? Это недопустимый синтаксис, вы хотите[30, 45]
или'30 45'
или что-то в этом роде?