Javascript 使用缩写数组提取新对象的属性

Javascript 使用缩写数组提取新对象的属性,javascript,arrays,object,javascript-objects,Javascript,Arrays,Object,Javascript Objects,我有一个包含属性名称的对象,这些属性名称指示一周中每一天日程的开始和结束时间。我还有一个只包含日期缩写的数组 基于此数组,我希望转换此对象,使其看起来像下面标记为“预期输出”的部分中的内容: 预期产出: { "sun": "10:30,11:00", "mon": "", "tues": "", "wed": "" } 下面的代码片段将提供您需要的内容 var result = {}; options.forEach((option) => { var ite

我有一个包含属性名称的对象,这些属性名称指示一周中每一天日程的开始和结束时间。我还有一个只包含日期缩写的数组

基于此数组,我希望转换此对象,使其看起来像下面标记为“预期输出”的部分中的内容:

预期产出:

 {
  "sun": "10:30,11:00",
  "mon": "",
  "tues": "",
  "wed": ""
 }

下面的代码片段将提供您需要的内容

var result = {};
options.forEach((option) => {
    var item_keys = Object.keys(items).filter(key => (key.indexOf(option) != -1));
    var val = '';
    item_keys.forEach(key => (val = val ? (val+','+items[key]) : items[key]));
    result[option] = val;
});
我是这样做的:

var选项=[“太阳”、“周一”、“周二”、“周三”];
可变项目={
太阳开始:“10:30”,
周日结束:“11:00”,
星期一开始:,
周一结束:“
}
函数getStartEndString(Day缩写)
{
让startTime=“”
让endTime=“”;
if(items.hasOwnProperty(day缩写+“\u start”))
{
startTime=项目[日期缩写+“_start”];
}
if(items.hasOwnProperty(day缩写+“_end”))
{
endTime=项目[日期缩写+结束];
}
如果(startTime.length>0&&endTime.length>0)
{
返回`${startTime},${endTime}`;
}
其他的
{
返回“”;
}
}
设obj={};
options.forEach((day缩写)=>
{
obj[Day缩写]=getStartEndString(Day缩写);
});

控制台日志(obj)
你能展示一下你在一些小提琴上试过的东西吗?如果只定义了
项,那么会发生什么。sun\u start
是定义的,而不是
项。sun\u end
?反之亦然?@ TrimCOT,应该是空字符串“e <代码>”“Sun”:“”为您的答案增加更多的值。考虑对这个代码所做的解释加上一个解释,它不包括当代码< >结尾> /CODE>键在项目之前>代码>开始> /代码>时的情况。代码>变量项={sun_-end:“12:30”,sun_-start:“11:00”,mon_-start:“,mon_-end:”}将导致
{sun:“12:30,11:00”,mon:,tues:,wed:}
var result = {};
options.forEach((option) => {
    var item_keys = Object.keys(items).filter(key => (key.indexOf(option) != -1));
    var val = '';
    item_keys.forEach(key => (val = val ? (val+','+items[key]) : items[key]));
    result[option] = val;
});