在对象数组中基于对象属性组合对象

问题描述

我只想合并其中一个属性的对象,还想在输出中添加缺少的 Days名称

Take this for an example:

var array =  [
       {
      "heure1": "14:00","heure2": "17:00","day": "Sunday",},{
      "heure1": "08:00","heure2": "13:00",{
      "heure1": "14:00","heure2": "16:00","day": "Monday","heure2": "18:00",];

预期结果:

var array =  [
       {
      "heure": ["14:00","17:00","08:00","13:00"],{
      "heure": ["14:00","16:00","18:00"],{
      "heure": [],"day": "Saturday","day": "Friday","day": "Thursday","day": "Wednesday","day": "Tuesday",];

我也在尝试一些堆栈溢出的答案,但是没有成功:-( 一天的剂量无关紧要。 预先感谢。

解决方法

您可以首先在一周的7天中创建7个条目,每个条目的ENV HTTP_PROXY="http://10.10.10.10:8000" ENV HTTPS_PROXY="http://10.10.10.10:1212" 属性都有一个空数组。

然后迭代原始数据,查找正确的条目,然后将其两次推入heure数组。

请注意,您的heure属性在示例输入(DAY,DAY)中具有不同的拼写。我强烈建议对此类属性名称使用所有小写字母。

这是一个实现:

Day

,

我的方式...

var arr_1 = 
    [ { heure1: '14:00',heure2: '17:00',day: 'Sunday' },{ heure1: '08:00',heure2: '13:00',{ heure1: '14:00',heure2: '16:00',day: 'Monday' },heure2: '18:00',day: 'Monday' } 
    ] 

const days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']

const res = days.map(d=>
        {
        let r = { heure:[],day:d }
        arr_1.filter(x=>x.day===d)
             .forEach(({heure1,heure2})=> { r.heure.push(heure1,heure2) })
        r.heure.sort() 
        return r
        })


console.log( res  )
.as-console-wrapper { max-height: 100% !important; top: 0; }

,

我的尝试

<script>
    var array = [{
            "heure1": "14:00","heure2": "17:00","DAY": "Sunday",},{
            "heure1": "08:00","heure2": "13:00",{
            "heure1": "14:00","heure2": "16:00","DAY": "Monday","heure2": "18:00",];
    var days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Sunday","Saturday"];
    var result = [];
    days.map(function (day) {
        var daysInArray = array.filter(function (a) {
            return day == a.DAY
        })
        // console.log(daysInArray);
        if (daysInArray.length) {
            time = [];
            daysInArray.map(function (item,i) {
                for (var key in item) {
                    if (daysInArray[0].hasOwnProperty(key) && key != "DAY") {
                        time.push(item[key])
                    }
                }
            })
            result.push({
                "day": day,"heure": time
            })
        } else {
            result.push({
                "day": day,"heure": []
            })
        }
    })
    console.log(result);
</script>
,

该结果结构是否必要?

如果没有,请修改结果结构,您可以执行以下操作:

const getHeureByDay = (heureArray) => {
  let result = {
    Sunday: { heure: [] },Monday: { heure: [] },Tuesday: { heure: [] },Wednesday: { heure: [] },Thursday: { heure: [] },Friday: { heure: [] },Saturday: { heure: [] },};
  
  heureArray.forEach((heureItem) => {
    Object.keys(heureItem).forEach((key) => {
      if (key !== "day") {
        result[heureItem.day].heure.push(heureItem[key]);
      }
    })
  });
  
  return result;
};

const heureArray = [
  {
    "heure1": "14:00","day": "Sunday",{
    "heure1": "08:00",{
    "heure1": "14:00","day": "Monday",}
];

console.log(getHeureByDay(heureArray));

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...