Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 查找数组和对象之间的关系 let数据=[{ 姓名:“莎拉”, 年份:[“1924”、“1936”、“1948”、“1960”、“1972”、“1984”、“1996”、“2008”、“2020”、“2032”] }, { 姓名:“安”, 年份:[“1925”、“1937”、“1949”、“1961”、“1973”、“1985”、“1997”、“2009”、“2021”、“2033”] } ];_Javascript_Arrays_Object_If Statement_Case - Fatal编程技术网

Javascript 查找数组和对象之间的关系 let数据=[{ 姓名:“莎拉”, 年份:[“1924”、“1936”、“1948”、“1960”、“1972”、“1984”、“1996”、“2008”、“2020”、“2032”] }, { 姓名:“安”, 年份:[“1925”、“1937”、“1949”、“1961”、“1973”、“1985”、“1997”、“2009”、“2021”、“2033”] } ];

Javascript 查找数组和对象之间的关系 let数据=[{ 姓名:“莎拉”, 年份:[“1924”、“1936”、“1948”、“1960”、“1972”、“1984”、“1996”、“2008”、“2020”、“2032”] }, { 姓名:“安”, 年份:[“1925”、“1937”、“1949”、“1961”、“1973”、“1985”、“1997”、“2009”、“2021”、“2033”] } ];,javascript,arrays,object,if-statement,case,Javascript,Arrays,Object,If Statement,Case,我们分配一个数组,数组中有两个对象,每个对象都有另一个数组 我想询问用户她的出生年份,并从名称的对象值中选择她的姓名 例如,如果她出生于1949年,那么她的名字一定是安;如果她出生于1960年,那么她的名字一定是莎拉 我正在考虑两天,但我不能解决这个问题 如果/else或case切换状态,我不想编写代码。还有其他代码选项吗? 我想把名字和年份联系起来 我希望我能解释清楚。您可以使用以下方法完成此操作:找到包含您要查找内容的条目,然后从中提取名称。大概是这样的: function getName

我们分配一个数组,数组中有两个对象,每个对象都有另一个数组

我想询问用户她的出生年份,并从名称的对象值中选择她的姓名

例如,如果她出生于1949年,那么她的名字一定是安;如果她出生于1960年,那么她的名字一定是莎拉

我正在考虑两天,但我不能解决这个问题

如果/else或case切换状态,我不想编写代码。还有其他代码选项吗? 我想把名字和年份联系起来


我希望我能解释清楚。

您可以使用以下方法完成此操作:找到包含您要查找内容的条目,然后从中提取名称。大概是这样的:

function getName (searchYear) {
  const entry = data.find(({year}) => year.includes[searchYear]);
  return entry?.name;
}

我想这就是你要找的

let数据=[{
姓名:“莎拉”,
年份:[“1924”、“1936”、“1948”、“1960”、“1972”、“1984”、“1996”、“2008”、“2020”、“2032”]
}, {
姓名:“安”,
年份:[“1925”、“1937”、“1949”、“1961”、“1973”、“1985”、“1997”、“2009”、“2021”、“2033”]
}];
功能年名称(年){
返回data.find(x=>x.year.includes(year)).name;
}
console.log(yearToName(“1936”))

console.log(yearToName(“1937”))
这可能不是您想要的,但是通过设置查找结构,您可以加快并简化以下搜索步骤。它将以一种稳定的方式运行。E多年来,如果没有定义名称,将返回“未定义”

let data=[
{姓名:“莎拉”,
年份:[“1924”、“1936”、“1948”、“1960”、“1972”、“1984”、“1996”、“2008”、“2020”、“2032”],
{姓名:“安”,
年份:[“1925”、“1937”、“1949”、“1961”、“1973”、“1985”、“1997”、“2009”、“2021”、“2033”]
];
//设置loup结构:
data.lookup=data.reduce((a,{name,year})=>(year.forEach(y=>a[y]=name),a),{})
//在多年内运行测试:

对于(设y=1923;y),您可以编写一个函数来获取名称

用这些方法

  • -从对象数组中获取单个对象
  • -在年份数组中查找已通过的年份
  • -可选链接,为了获得错误,它将返回未定义或null
  • -null合并运算符,用于在左侧为null或未定义时返回右侧
  • let数据=[{
    姓名:“莎拉”,
    年份:[“1924”、“1936”、“1948”、“1960”、“1972”、“1984”、“1996”、“2008”、“2020”、“2032”]
    }, {
    姓名:“安”,
    年份:[“1925”、“1937”、“1949”、“1961”、“1973”、“1985”、“1997”、“2009”、“2021”、“2033”]
    }];
    const getTheName=(year)=>data.find(datumn=>datumn.year.includes(year))?.name???`没有名称`
    log(getTheName('1924'))//Sarah
    console.log(getTheName('1949'))//Ann
    
    log(getTheName('2020'))//没有名字
    如果她出生于1959年会发生什么?她的名字是否应该是
    未定义的
    ?我们可以为其他名字再做一年。您可以使用空合并运算符返回默认值,请检查@halilibrahimtosun@halilibrahimtosun如果这些答案中的任何一个解决了您的问题,并且您不需要任何额外的帮助,pl请考虑接受答案。谢谢!谢谢大家,这些解决方案对我帮助很大。