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

JavaScript中如何筛选数组中continent含America的对象?

解决数组中筛选特定大陆对象的问题

我来帮你搞定这个筛选数组的问题~先看你的场景:你有一个包含人员信息的people数组,想要保留那些continent字段是"America"、"North America"或者"South America"的对象,但之前用startsWith("Am")没效果,因为"North America"是以"Nor"开头的,拆分字符串后又遇到方法不存在的错误对吧?

下面给你几个实用的解决方案:

方法一:直接检查是否包含目标子串(最简洁)

因为你要匹配的三个大陆名称都包含"America"这个子串,直接用字符串的includes()方法就能轻松搞定:

const people = [ { first: 'John', last: 'Doe', year: 1991, continent: "North America" }, { first: 'Jane', last: 'Doe', year: 1990, continent: "Americas" }, { first: 'Jahn', last: 'Deo', year: 1986, continent: "Europe" }, { first: 'Jone', last: 'Deo', year: 1992, continent: "North America" }, { first: 'Jhan', last: 'Doe', year: 1989, continent: "Asia" }, { first: 'Jeon', last: 'Doe', year: 1992, continent: "Europe" }, { first: 'Janh', last: 'Edo', year: 1984, continent: "North America" }, { first: 'Jean', last: 'Edo', year: 1981, continent: "North America"}, ];

const filteredPeople = people.filter(e => e.continent.includes("America"));
console.log(filteredPeople);

这样就能筛选出所有符合要求的对象,代码简洁又易懂。

方法二:正则表达式精准匹配(适合严格场景)

如果担心有其他带"America"但不符合的情况(比如你的数组里有"Americas",这个方法可以排除它),可以用正则表达式来匹配精确的大陆名称:

const filteredPeople = people.filter(e => /^(North|South)?\s*America$/.test(e.continent));

这个正则的规则是:

  • ^ 标记字符串开头
  • (North|South)? 表示可选的"North"或"South"(?代表该内容可选)
  • \s* 允许0个或多个空格(避免空格不一致的问题)
  • America$ 标记字符串必须以"America"结尾

这样就能严格匹配"America"、"North America"、"South America"这三种情况,自动排除不符合的条目。

方法三:拆分字符串后检查单词(贴合你之前的思路)

如果你想延续拆分字符串的思路,可以拆分后检查数组中是否包含"America"这个单词:

const filteredPeople = people.filter(e => {
  const continentWords = e.continent.split(" ");
  return continentWords.includes("America");
});

或者更针对性地检查第二个单词(适配双词结构的大陆名称):

const filteredPeople = people.filter(e => {
  const continentWords = e.continent.split(" ");
  // 处理两种情况:单独的"America",或者第二个单词是"America"
  return continentWords[0] === "America" || (continentWords[1] && continentWords[1] === "America");
});

总结

如果没有特殊的严格匹配需求,方法一是最推荐的,简单高效;如果需要精准排除其他类似字符串,就用方法二的正则方案;要是想贴合你之前的拆分思路,方法三也能完美解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:37:40