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