Javascript 从将其键与数组中的值进行比较的另一个对象生成对象

Javascript 从将其键与数组中的值进行比较的另一个对象生成对象,javascript,Javascript,以下对象用作填充应用程序UI中选择框选项的起点: const months = { "1": "Jan", "2": "Feb", "3": "Mar", "4": "Apr", "5": "May", "6": "Jun", &q

以下对象用作填充应用程序UI中选择框选项的起点:

const months = {
  "1": "Jan",
  "2": "Feb",
  "3": "Mar",
  "4": "Apr",
  "5": "May",
  "6": "Jun",
  "7": "Jul",
  "8": "Aug",
  "9": "Sep",
  "10": "Oct",
  "11": "Nov",
  "12": "Dec"
}
选择框的选项必须根据另一个数组的内容进行限制。下面是该阵列的一个示例:

const existingMonths = [
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  12
];
因此,在本例中,选择框的最终选项的对象应为:

const availableMonths = {
  "9": "Sep",
  "10": "Oct",
  "11": "Nov"
}
我很难弄清楚如何构建
availableMonths
对象。这不会提供所需的输出:

const availableMonths = Object.entries(months).filter(k => !existingMonths.includes(k));

您需要从条目数组中获取密钥,并根据该数组的值检查密钥的数值。最后根据条目创建一个新对象

const
月份={1:“一月”,2:“二月”,3:“三月”,4:“四月”,5:“五月”,6:“六月”,7:“七月”,8:“八月”,9:“九月”,10:“十月”,11:“十一月”,12:“十二月”},
现有月份=[1,2,3,4,5,6,7,8,12],
AvailableMonts=Object.fromEntries(对象
.参赛作品(个月)
.filter(([k])=>!现有月份。包括(+k))
);
console.log(可用个数)
const月={
“1”:“Jan”,
“2”:“2月”,
“3”:“三月”,
“4”:“4月”,
“5”:“可能”,
“6”:“君”,
“7”:“7月”,
“8”:“8月”,
“9”:“9月”,
“10”:“10月”,
“11”:“11月”,
“12”:“12月”
}
const existingMonths=[1,2,3,4,5,6,7,8,12]
const availableMonts=Object.fromEntries(
Object.entries(months.filter([k,v])=>!existingMonths.includes(+k))
)

console.log(AvailableMonts)
步骤1:浅拷贝月对象
步骤2:循环现有月份
步骤3:通过与现有月份进行比较,删除已复制的浅层属性 元素
let
月份={1:“一月”,2:“二月”,3:“三月”,4:“四月”,5:“五月”,6:“六月”,7:“七月”,8:“八月”,9:“九月”,10:“十月”,11:“十一月”,12:“十二月”},
现有月份=[1,2,3,4,5,6,7,8,12],可用月份={}
分配对象(可用个数,个月);
existingMonths.forEach((monthNumber)=>{delete availableMonths[monthNumber]})

console.log(可用个数)
k
是一个包含两个条目的数组-第一个是键,第二个是值。如果要检查键是否存在于另一个数组中,只需获取第一个元素。此外,键应该是字符串,而
existingMonths
数组包含数字。您需要将两者转换为相同的类型。
+k
做什么?@knot22解析
字符串
数字