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

如何在JavaScript中获取对象数组内的目标对象属性名(如CODE_NOT_FOUND)

如何获取对象数组中特定动态属性的键名?

假设我们有这样一个对象数组:

var arrOfObjects = [{ 
  "@attributes":{ "shuttle_id":"19939004", "date":"2021-08-30 14:04:00" }, 
  "CODE_NOT_FOUND":{ "Code":"58182", "PosX":"56.6678", "PosY":"54.5086" } 
}, { 
  "@attributes":{ "shuttle_id":"19939004", "date":"2021-08-30 14:02:00" }, 
  "DECONNECTED_ERROR":{ } 
}]

我原本用下面的代码遍历数组,想获取子元素:

arrOfObjects.forEach(objOfObjects=> {
  for(var key in objOfObjects) {
    var value = objOfObjects[key];
    console.log(value);
  }
});

执行后得到的结果是属性值:

{ "shuttle_id":"19939004", "date":"2021-08-30 14:04:00" }
{ "LandmarkCode":"58182", "PosX":"56.6678", "PosY":"54.5086" }

但我实际需要拿到像CODE_NOT_FOUND、DECONNECTED_ERROR这类属性的键名,请问该怎么做?


解决方案

其实你离答案只差一步啦!你之前的代码只输出了属性值(value),但键名其实就在key变量里,只需要加个判断过滤掉不需要的@attributes键就行。

方法1:在for...in循环中过滤目标键

直接在循环里检查当前键是不是@attributes,不是的话就是你要的错误类型键名:

arrOfObjects.forEach(objOfObjects => {
  for(var key in objOfObjects) {
    if(key !== "@attributes") {
      console.log("错误类型键名:", key);
      // 如果需要同时获取对应的值,也可以一起输出
      console.log("对应属性值:", objOfObjects[key]);
    }
  }
});

方法2:用Object.keys()结合过滤

如果你更喜欢用数组方法,也可以先获取对象的所有键,再过滤掉@attributes:

arrOfObjects.forEach(obj => {
  // 获取所有键并过滤掉@attributes
  const errorTypeKeys = Object.keys(obj).filter(key => key !== "@attributes");
  // 遍历输出每个目标键名(考虑到每个对象可能有多个?不过你的示例里每个对象只有一个)
  errorTypeKeys.forEach(key => {
    console.log(key);
  });
});

这两种方法都能帮你拿到CODE_NOT_FOUND、DECONNECTED_ERROR这类键名,根据你的习惯选就行啦~


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 07:29:05