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

如何检查嵌套对象中是否含url属性并输出去重后的url到页面?

解决方案:遍历嵌套对象并添加URL到页面

没问题,这需求很好实现!我们只需要遍历你的foodwebsites对象里的所有嵌套项,检查每个对象是否包含有效的url属性,符合条件就把它追加到页面body里。

基础实现代码

var foodwebsites = { 
  "bacon": [{ "url": "stackoverflow.com" }], 
  "icecream": [{ "url": "example.com" }], 
  "cheese": [{ "url": "example.com" }] 
};

// 遍历所有食物分类对应的URL数组
for (const foodGroup of Object.values(foodwebsites)) {
  // 遍历每个数组里的嵌套对象
  for (const entry of foodGroup) {
    // 严谨地判断对象是否包含有效的url属性
    if (entry && entry.hasOwnProperty('url') && entry.url.trim() !== '') {
      $('body').append("<div>" + entry.url +"</div>");
    }
  }
}

代码说明

  • 用Object.values(foodwebsites)获取对象的所有值(也就是每个食物对应的URL数组),这样不管你以后加多少新的食物分类,代码都能自动适配,不用修改循环条件。
  • 嵌套循环遍历每个数组里的对象,确保不会漏掉任何一个可能的URL项。
  • 那个if判断做了三层检查:
    1. 确保entry不是null或undefined,避免报错
    2. 用hasOwnProperty('url')确认这个属性是对象自身拥有的,排除继承来的属性干扰
    3. 检查url值不为空字符串(用trim()还能过滤掉纯空格的无效URL)

可选:去重实现

如果你希望重复的URL只显示一次(比如你示例里的example.com出现了两次,最终只显示一次),可以加个Set来记录已经添加过的URL:

var foodwebsites = { 
  "bacon": [{ "url": "stackoverflow.com" }], 
  "icecream": [{ "url": "example.com" }], 
  "cheese": [{ "url": "example.com" }] 
};

const addedUrls = new Set();

for (const foodGroup of Object.values(foodwebsites)) {
  for (const entry of foodGroup) {
    if (entry && entry.hasOwnProperty('url') && entry.url.trim() !== '' && !addedUrls.has(entry.url)) {
      addedUrls.add(entry.url);
      $('body').append("<div>" + entry.url +"</div>");
    }
  }
}

这个版本执行后,页面body里就会和你想要的效果完全一致:

stackoverflow.com
example.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:06:04