Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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 - Fatal编程技术网

JavaScript对象动态检索值

JavaScript对象动态检索值,javascript,Javascript,抱歉,如果这听起来像个愚蠢的问题 我有以下JavaScript对象: data = { "Max" : 100 } 同一对象也可以具有以下形式: data = { "January": {"Max" : 100} } 如果给定两种形式,我想使用一个相同的函数来检索Max的值 这让我想知道,当您编写要检索的值时,是否可以直接在[]中编写条件表达式?JavaScript中是否允许使用以下表达式?大概是这样的: data[

抱歉,如果这听起来像个愚蠢的问题

我有以下JavaScript对象:

data = {
    "Max" : 100
}
同一对象也可以具有以下形式:

data = {
    "January": {"Max" : 100}
}
如果给定两种形式,我想使用一个相同的
函数
来检索
Max
的值

这让我想知道,当您编写要检索的值时,是否可以直接在
[]
中编写条件表达式?JavaScript中是否允许使用以下表达式?大概是这样的:

data[monthly ? 'month' : '']

当然我试过了,但没用。但是有没有其他方法可以在一条线上做这样的事情呢
monthly
是一个布尔值

您可以使用下面的脚本来实现这一点,我添加了一些注释来说明这一点

var数据1={
“最大”:100
}
变量数据2={
“一月”:{“最大”:100}
}
//将月份存储在数组中以循环查看当前键是否为月份
风险值月份=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”];
函数getMax(数据){
//如果键“Max”存在于数据中,那么只需获取“data.Max”的值,然后在月份内循环,查看其中一个月是否是键并存储真实值,在这种情况下,它存储一个对象,因此这就是我们想要的,然后获取它的.Max值
在数据?数据中返回“Max”。Max:data[months.filter(m=>data[m]?m:)[0]]。Max;
}
log(getMax(data1));

log(getMax(data2))您可以使用下面的脚本来实现这一点,我已经添加了一些注释来说明这一点

var数据1={
“最大”:100
}
变量数据2={
“一月”:{“最大”:100}
}
//将月份存储在数组中以循环查看当前键是否为月份
风险值月份=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”];
函数getMax(数据){
//如果键“Max”存在于数据中,那么只需获取“data.Max”的值,然后在月份内循环,查看其中一个月是否是键并存储真实值,在这种情况下,它存储一个对象,因此这就是我们想要的,然后获取它的.Max值
在数据?数据中返回“Max”。Max:data[months.filter(m=>data[m]?m:)[0]]。Max;
}
log(getMax(data1));
log(getMax(data2))您可以利用

let数据={
“最大”:100
};
常量getMax=(数据)=>{
//检查“data”中是否有“Max”,如果有,则返回“data.Max”else
//使用`object.values`和获取对象中键的值
//从数组中检索“Max”
返回data.Max?data.Max:Object.values(数据)[0]。Max
}
console.log(getMax(data));
数据={
“一月”:{
“最大”:200
}
}
console.log(getMax(data))您可以利用

let数据={
“最大”:100
};
常量getMax=(数据)=>{
//检查“data”中是否有“Max”,如果有,则返回“data.Max”else
//使用`object.values`和获取对象中键的值
//从数组中检索“Max”
返回data.Max?data.Max:Object.values(数据)[0]。Max
}
console.log(getMax(data));
数据={
“一月”:{
“最大”:200
}
}

console.log(getMax(data))
出色地使用in操作符,很多人可能只需
个月。Max
但如果你有falsy,这可能会表现得很奇怪values@Zer0谢谢你的反馈,我喜欢总是写好代码这很好,但我想知道具体的月份,而不是每个月检查对象,看是否有“真实”值请更新您的问题,我的答案是关于当前问题的,如果您希望我更新它,您需要更新您的问题,请给出预期的输入和输出以及in运算符的出色使用,很多人可能只花了
个月。Max
但如果你有falsy,这可能会表现得很奇怪values@Zer0谢谢你的反馈,我喜欢总是写好代码这很好,但我想知道具体的月份,而不是每个月检查对象,看是否有“真实”值请更新你的问题,我的答案是关于当前的问题,如果你想让我更新它,你需要更新你的问题,请给出预期的输入和输出