如何在Javascript中创建数组对象

如何在Javascript中创建数组对象,javascript,arrays,object,Javascript,Arrays,Object,我花在这件事上的时间比我想承认的要多。我很难构造一个填充了数组的对象 我希望我的数据如下所示: items={ { '2012-05-22': [{text: 'item 1 - any js object'}], '2012-05-23': [{text: 'item 2 - any js object'}], '2012-05-24': [], '2012-05-25': [{text: 'item 3 - any js object'},{t

我花在这件事上的时间比我想承认的要多。我很难构造一个填充了数组的对象

我希望我的数据如下所示:

items={
    {
     '2012-05-22': [{text: 'item 1 - any js object'}],
     '2012-05-23': [{text: 'item 2 - any js object'}],
     '2012-05-24': [],
     '2012-05-25': [{text: 'item 3 - any js object'},{text: 'any js object'}],
    }
}
Object {start: "08:00:00", end: "09:00:00", full_name: "Tomomi", date: "2017-06-08", Barber_id: "1"…}
Object {2017-06-08: Array(1)}
2017-06-08
:
Array(1)
我正在进行数据库调用,收到的数据如下所示:

items={
    {
     '2012-05-22': [{text: 'item 1 - any js object'}],
     '2012-05-23': [{text: 'item 2 - any js object'}],
     '2012-05-24': [],
     '2012-05-25': [{text: 'item 3 - any js object'},{text: 'any js object'}],
    }
}
Object {start: "08:00:00", end: "09:00:00", full_name: "Tomomi", date: "2017-06-08", Barber_id: "1"…}
Object {2017-06-08: Array(1)}
2017-06-08
:
Array(1)
我感兴趣的数据是全名值和日期值

这就是我所尝试的:

let  newItems = {};
axios.post(endpoint, {lookup: day.dateString}).then((customerData) => {
    customerData.data.forEach((val,key)=>{
        newItems = {[val.date]:[]};
        newItems[val.date].push({name:val.full_name});
        console.log(newItems); 
    })
}
看起来是这样的:

items={
    {
     '2012-05-22': [{text: 'item 1 - any js object'}],
     '2012-05-23': [{text: 'item 2 - any js object'}],
     '2012-05-24': [],
     '2012-05-25': [{text: 'item 3 - any js object'},{text: 'any js object'}],
    }
}
Object {start: "08:00:00", end: "09:00:00", full_name: "Tomomi", date: "2017-06-08", Barber_id: "1"…}
Object {2017-06-08: Array(1)}
2017-06-08
:
Array(1)
这很接近,但问题是我的代码正在覆盖我的数据。 我正在尝试动态创建以下内容:

'2012-05-25': [{text: 'item 3 - any js object'},{text: 'any js object'}],
这样每个日期都可以有多个用户。希望这是有道理的

谢谢你的帮助。

var byDate={};//对象以按日期存储收到的数据
函数addIntoByDate(obj){
byDate[obj.date]=byDate[obj.date]| |[];
byDate[obj.date]。推送(obj);
}
//模拟逐个添加服务器数据
附加日期({日期:“2017-06-08”,全名:“Cat”,文本:“Foo!!”});//<同日
附加日期({日期:“2016-05-23”,全名:“狗”,文本:“酒吧”});
附加日期({日期:“2017-06-08”,全名:“Bug”,文本:“Baz…”);//<同日
//试验
console.dir(按日期)
var byDate={};//对象以按日期存储收到的数据
函数addIntoByDate(obj){
byDate[obj.date]=byDate[obj.date]| |[];
byDate[obj.date]。推送(obj);
}
//模拟逐个添加服务器数据
附加日期({日期:“2017-06-08”,全名:“Cat”,文本:“Foo!!”});//<同日
附加日期({日期:“2016-05-23”,全名:“狗”,文本:“酒吧”});
附加日期({日期:“2017-06-08”,全名:“Bug”,文本:“Baz…”);//<同日
//试验

console.dir(按日期)您可以使用对象分解、计算属性和
对象.assign()

constnewitems={};
常数数据=[
{
开始:“08:00:00”
,完:“09:00:00”
,全名:“Tomomi”
,日期:“2017-06-08”
,理发师编号:“1”
}
];
data.forEach({date,full_name})=>
赋值(newItems,{[date]:[{/*text://full_name}]});

console.log(newItems)您可以使用对象分解、计算属性和
对象.assign()

constnewitems={};
常数数据=[
{
开始:“08:00:00”
,完:“09:00:00”
,全名:“Tomomi”
,日期:“2017-06-08”
,理发师编号:“1”
}
];
data.forEach({date,full_name})=>
赋值(newItems,{[date]:[{/*text://full_name}]});

console.log(newItems)传递给forEach的函数表达式的第一行是:

newItems = {[val.date]:[]};
这会将newItems对象重置为具有一个日期:名称对的对象。你真的想要更像:

newItems[val.date]?newItems[val.date].push({name:val.full_name}):newItems[val.date]=[];

传递给forEach的函数表达式的第一行是:

newItems = {[val.date]:[]};
这会将newItems对象重置为具有一个日期:名称对的对象。你真的想要更像:

newItems[val.date]?newItems[val.date].push({name:val.full_name}):newItems[val.date]=[];

首先,为什么
items={{}
?应该类似于
items={}
如何在对象上调用
.forEach()
而不出错?什么是
customerData.data
,数组还是对象?另外,从您正在寻找的结果来看,似乎您实际上对
full\u name
一点也不感兴趣。我试图将客户的价值推送到对象中。这行代码是:newItems[val.date].push({name:val.full_name})@guest271314这是mysql数据库中的一个数组。首先,为什么
items={{{}
?应该类似于
items={}
如何在对象上调用
.forEach()
而不出错?什么是
customerData.data
,数组还是对象?另外,从您正在寻找的结果来看,似乎您实际上对
full\u name
一点也不感兴趣。我试图将客户的价值推送到对象中。这行代码是:newItems[val.date].push({name:val.full_name})@guest271314,这是mysql数据库中的一个数组。这非常有用。谢谢,这很有帮助。谢谢。我完全忘记了对象。分配这很有帮助,但Roko的答案对我来说更好。我完全忘记了对象。分配这很有帮助,但Roko的答案对我来说更好。