为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米脂 2022-12-29 15:45:45
存储原始警报以备后用。通过空函数或设置参数替换警报以写入控制台。如果需要正常的警报返回,请将存储的警报取回。alertOrig = alert;function alertBan(consoleLog){    alert = function(e) {        if (consoleLog) console.log(e);    }}function alertEnable(){   if ( alertOrig )       alert=alertOrig;}alertBan();alert('No console + no alert');alertBan(true);alert('With console');alertEnable();alert('Normal alert');
查看完整描述

4 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

我的尝试


<script>

    var array = [{

            "heure1": "14:00",

            "heure2": "17:00",

            "DAY": "Sunday",

        },

        {

            "heure1": "08:00",

            "heure2": "13:00",

            "DAY": "Sunday",

        },

        {

            "heure1": "14:00",

            "heure2": "16:00",

            "DAY": "Monday",

        },

        {

            "heure1": "08:00",

            "heure2": "18:00",

            "DAY": "Monday",

        },

    ];

    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>



查看完整回答
反对 回复 2022-12-29
?
繁花如伊

TA贡献2012条经验 获得超12个赞

您可以先为一周的 7 天创建 7 个条目,每个条目的heure属性都有一个空数组。


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


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


这是一个实现:


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


let days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];

let obj = Object.fromEntries(days.map(day => [day, { heure: [], day }]));

for (let {heure1, heure2, day} of array) obj[day].heure.push(heure1, heure2);

let result = Object.values(obj);


console.log(result);


查看完整回答
反对 回复 2022-12-29
?
不负相思意

TA贡献1777条经验 获得超10个赞

我的方式...


var arr_1 = 

    [ { heure1: '14:00', heure2: '17:00', day: 'Sunday' } 

    , { heure1: '08:00', heure2: '13:00', day: 'Sunday' } 

    , { heure1: '14:00', heure2: '16:00', day: 'Monday' } 

    , { heure1: '08:00', 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; }


查看完整回答
反对 回复 2022-12-29
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

那个结果结构是必要的吗?


如果不是,修改结果结构,你可以这样做:


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",

    "heure2": "17:00",

    "day": "Sunday",

  },

  {

    "heure1": "08:00",

    "heure2": "13:00",

    "day": "Sunday",

  },

     {

    "heure1": "14:00",

    "heure2": "16:00",

    "day": "Monday",

  },

     {

    "heure1": "08:00",

    "heure2": "18:00",

    "day": "Monday",

  }

];


console.log(getHeureByDay(heureArray));


查看完整回答
反对 回复 2022-12-29
  • 4 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信