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

如何基于指定水果名称数组从Fruits对象中提取对应子对象?

提取指定水果对象的解决方案

没问题,这有几种简单高效的方法可以帮你从原始的Fruits对象中提取指定水果的数据,完全符合你的需求:

方法1:使用Array.reduce()(推荐)

reduce方法非常适合这种从数组构建对象的场景,逻辑清晰且高效:

var Fruits={ 
  "Banana": { "Price": "50", "quility": "good" }, 
  "Mango": { "Price": "100", "quility": "best" }, 
  "Orange": { "Price": "80", "quility": "good" }, 
  "Apple": { "Price": "150", "quility": "best" } 
};
var SpecificFruits = ["Banana", "Mango"];

// 构建结果对象
var results = SpecificFruits.reduce((accumulator, fruitName) => {
  // 先检查当前水果是否存在于原始对象中,避免处理不存在的键
  if (Fruits.hasOwnProperty(fruitName)) {
    // 用对象展开运算符做浅拷贝,防止修改结果时影响原始Fruits对象
    accumulator[fruitName] = { ...Fruits[fruitName] };
  }
  return accumulator;
}, {}); // 初始值为一个空对象

console.log(results);

方法2:使用Array.forEach()(更直观)

如果你觉得reduce有点抽象,用forEach遍历数组手动构建结果对象会更易懂:

var results = {};

SpecificFruits.forEach(fruitName => {
  // 检查水果是否存在
  if (Fruits[fruitName]) {
    // 同样可以用浅拷贝避免引用问题
    results[fruitName] = { ...Fruits[fruitName] };
  }
});

console.log(results);

方法3:ES6+ 简洁写法(Object.fromEntries)

如果你偏爱更简洁的语法,可以结合Object.fromEntries和map来实现:

var results = Object.fromEntries(
  // 先把每个水果转成[key, value]格式的数组,再过滤掉不存在的条目
  SpecificFruits.map(fruit => [fruit, Fruits[fruit]]).filter(([_, value]) => value)
);

console.log(results);

注意事项

你给出的示例结果里Mango对象有重复的quility键,这在JavaScript中是不合法的——当对象里出现重复键时,后面的键值会直接覆盖前面的,所以实际运行后Mango只会保留一个"quility": "best"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:39:10