如何使用JavaScript查找数组中的孤立条目
如何在JavaScript中找出数组里的孤立条目
要解决这个问题,我们可以通过统计节点出现频次的思路来定位孤立条目——毕竟像例子里的Paris只在目标条目中出现一次,这就是它和其他条目无关联的核心特征。
具体实现步骤
统计所有节点的出现次数
先遍历整个输入数组,把每个条目的from和to节点都记录下来,统计每个节点在所有条目中出现的总次数。筛选孤立条目
再次遍历数组,找出那些包含「仅出现一次的节点」的条目——这类节点因为只在当前条目中出现,说明它没有和其他条目产生关联,对应的条目就是我们要找的孤立项。
完整代码示例
const input = [ { from: "Hong Kong", to: "Bejing" }, { from: "New York", to: "London" }, { from: "San Francisco", to: "Hong Kong" }, { from: "Paris", to: "New York" }, { from: "Bejing", to: "Singapore" }, { from: "London", to: "San Francisco" }, ]; // 第一步:统计每个节点的出现频次 const nodeFrequency = {}; input.forEach(entry => { // 更新from节点的计数 nodeFrequency[entry.from] = (nodeFrequency[entry.from] || 0) + 1; // 更新to节点的计数 nodeFrequency[entry.to] = (nodeFrequency[entry.to] || 0) + 1; }); // 第二步:找出包含唯一节点的条目 const isolatedEntry = input.find(entry => { return nodeFrequency[entry.from] === 1 || nodeFrequency[entry.to] === 1; }); console.log(isolatedEntry); // 输出结果:{ from: "Paris", to: "New York" }
补充说明
- 如果你的场景中可能存在多个孤立条目,可以把
find换成filter,这样会返回所有符合条件的条目数组。 - 要是你对「孤立条目」的定义是完全和其他条目无共享节点(即条目的
from和to都只出现一次),可以修改筛选条件为:const isolatedEntries = input.filter(entry => { return nodeFrequency[entry.from] === 1 && nodeFrequency[entry.to] === 1; });
内容的提问来源于stack exchange,提问作者BlockChain Learner
相关产品推荐
相关产品推荐

