如何用JavaScript循环创建存储美国总统信息的不同变量?
解决动态存储总统信息的问题
直接通过us-presidents提供的presidents数组就能获取所有总统数据,没必要多次调用searchPresidents。更推荐用对象或数组统一存储所有总统信息,而非动态创建单个变量——后者容易污染全局作用域,还会出现姓氏重复(比如亚当斯父子)的冲突问题。
代码示例:用对象存储(支持姓氏/编号作为键)
import { presidents } from "us-presidents"; // 创建对象存储所有总统信息,避免动态变量的弊端 const presidentData = {}; presidents.forEach(president => { // 方案1:用总统编号作为键(唯一不重复) const key = president.number; presidentData[key] = president; // 方案2:用姓氏作为键,处理重复情况 // const lastName = president.name.split(' ').pop(); // const uniqueKey = presidentData[lastName] ? `${lastName}-${president.term.startYear}` : lastName; // presidentData[uniqueKey] = president; }); // 示例:通过编号访问第45任总统(特朗普) const trump = presidentData[45]; console.log(`Starting year: ${trump.term.startYear}`); console.log(`Ending year: ${trump.term.endYear}`); console.log(`Name: ${trump.name}`); console.log(`Wiki: ${trump.wikipedia}`); // 遍历所有总统信息打印 Object.values(presidentData).forEach(p => { console.log(`\n--- ${p.name} ---`); console.log(`任期: ${p.term.startYear} - ${p.term.endYear}`); console.log(`副总统: ${p.vicePresident || '暂无记录'}`); });
关键说明
- 直接遍历
presidents数组:比多次调用searchPresidents更高效,数组本身已经包含所有总统的完整数据。 - 统一存储的优势:用对象或数组管理所有数据,方便后续遍历、修改和查询,不会出现变量名冲突或全局污染的问题。
- 处理重复姓氏:如果坚持用姓氏作为键,可以通过「姓氏+上任年份」的组合生成唯一键,避免亚当斯、罗斯福这类重复姓氏的冲突。
内容的提问来源于stack exchange,提问作者haxxorman
相关产品推荐
相关产品推荐

