Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将特性添加到已分组的对象并取消分组_Javascript_Underscore.js - Fatal编程技术网

Javascript 将特性添加到已分组的对象并取消分组

Javascript 将特性添加到已分组的对象并取消分组,javascript,underscore.js,Javascript,Underscore.js,我正在使用下划线.js对我的对象进行分组,现在我想添加一个属性作为该组的标识符,然后将这些对象还原为其原始结构。但不知道怎么做 规则是找到当天有多个约会的人,并在其中添加一个属性 我们在这里取得的成就: 使用这行代码: var resultt = _.chain(allAppointments) .groupBy('appointment_date') .mapObject( date => _.groupBy(date, 'email' ) ) 从我们得到的结果来看,这

我正在使用下划线.js对我的对象进行分组,现在我想添加一个属性作为该组的标识符,然后将这些对象还原为其原始结构。但不知道怎么做


规则是找到当天有多个约会的人,并在其中添加一个属性

我们在这里取得的成就:

使用这行代码:

var resultt = _.chain(allAppointments)
    .groupBy('appointment_date')
    .mapObject( date => _.groupBy(date, 'email' ) )
从我们得到的结果来看,这是:

{
  "23July": {
    "john@domain.com": [
      {
        "ap_id": 23,
        "name": "John",
        "email": "john@domain.com",
        "appointment_date": "23July",
        "appointment_category": 3,
        "time": "morning"
      },
      {
        "ap_id": 44,
        "name": "John",
        "email": "john@domain.com",
        "appointment_date": "23July",
        "appointment_category": 4,
        "time": "afternon"
      }
    ],
    "rose@domain.com": [
      {
        "ap_id": 55,
像这样简单的事情

allAppointments_Filtered: 
      [{
            "ap_id": 23,
            "name": "John",
            "email": "John@domain.com",
            "appointment_date": "23July",
            "appointment_category": 3,
            "time": "morning",
            hasMultipleAppointmentOnDate: "yes"

            },{

           "ap_id": 55,
           "name": "Rose",
           "email": "rose@domain.com",
           "appointment_date": "23July",
           "appointment_category": 4,
           "time": "afternoon"
            hasMultipleAppointmentOnDate: "nope"

            },{

           "ap_id": 44,
           "name": "John",
           "email": "john@domain.com",
           "appointment_date": "23July",
           "appointment_category": 4,
           "time": "afternoon"
            hasMultipleAppointmentOnDate: "yes"

            },{
              ...

      }];

嗯,您不需要进行所有这些分组和映射。您需要做的只是一张地图和一个基于您检查的当前约会的计数:

var Allappoints=[ { 美联社id:23, 姓名:约翰, 电邮:john@domain.com, 任命日期:2007年7月23日, 任命类别:3, 时间:上午 }, { 美联社id:55, 姓名:罗斯, 电邮:rose@domain.com, 任命日期:2007年7月23日, 任命类别:4, 时间:下午 }, { 美联社id:44, 姓名:约翰, 电邮:john@domain.com, 任命日期:2007年7月23日, 任命类别:4, 时间:下午 }, { 美联社id:70, 姓名:凯特, 电邮:kate@domain.com, 任命日期:2007年7月29日, 任命类别:4, 时间:下午 } ] 变量计数={}; var result=\uuu0.MapObjectAllAppoints,约会=>{ var key=appointment.email+appointment.appointment\u日期; 如果!\u0.has计数,键{ 计数[键]=\u0.CountByAllAppPoints,应用=> appointment.email==app.email&& appointment.appointment\u date==app.appointment\u date .true>1 } appointment.hasMultipleAppointmentOnDate=计数[键]; 回程预约; }; console.logresult;
您需要按组合键进行分组:

//资料 常量allappoints=[ { 美联社id:23, 姓名:约翰, 电邮:john@domain.com, 任命日期:2007年7月23日, 任命类别:3, 时间:上午 }, { 美联社id:55, 姓名:罗斯, 电邮:rose@domain.com, 任命日期:2007年7月23日, 任命类别:4, 时间:下午 }, { 美联社id:44, 姓名:约翰, 电邮:john@domain.com, 任命日期:2007年7月23日, 任命类别:4, 时间:下午 }, { 美联社id:70, 姓名:凯特, 电邮:kate@domain.com, 任命日期:2007年7月29日, 任命类别:4, 时间:下午 } ]; //获取分组键,即电子邮件+日期 const groupKey=i=>i.email+''+i.appointment\u日期; //存储唯一电子邮件+日期的约会计数 const counts=u.countbyallappoints,groupKey; //检查约会日期是否有多个实例 const isMulti=i=>counts[groupKeyi]>1; //使用多指标属性更新约会 const multiProp=i=>{hasmultipleappointondate:isMultii?yes:nope}; //使用多个属性更新初始数组项 const updated=u.mapallappoints,i=>u.extendi,multiPropi; //看到结果了吗 console.logupdated;
添加属性的规则是什么?请将您的“尝试”添加到问题中。规则是查找当天有多个约会的人,并为其添加属性。我正在尝试不同的迭代,但它就是不起作用。亲爱的,谢谢你,伙计,你和@matei同时回答,而且几乎有类似的解决方案,matei的一个也很好,并且完成了工作,但是我必须选择这个作为选择的答案,因为你已经把它分解了,回答得更清楚,更详细。一直到是:否..:无论如何,感谢你们两位。如果你想以后保留第一个multi实例并从阵列中删除其余multi,你会在更新后运行类似的步骤吗?你会怎么做?