You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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 || '暂无记录'}`);
});

关键说明

  1. 直接遍历presidents数组:比多次调用searchPresidents更高效,数组本身已经包含所有总统的完整数据。
  2. 统一存储的优势:用对象或数组管理所有数据,方便后续遍历、修改和查询,不会出现变量名冲突或全局污染的问题。
  3. 处理重复姓氏:如果坚持用姓氏作为键,可以通过「姓氏+上任年份」的组合生成唯一键,避免亚当斯、罗斯福这类重复姓氏的冲突。

内容的提问来源于stack exchange,提问作者haxxorman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 08:23:55