【问题标题】:Access first element of json array [duplicate]访问json数组的第一个元素[重复]
【发布时间】:2020-02-28 21:18:57
【问题描述】:

这是我的 JSON 对象

{
    "errors": {
        "product_name": {
            "message": "Product name is required",
            "name": "ValidatorError"
        },
        "category": {
            "message": "Category is required",
            "name": "ValidatorError"

        }
    }
}

我的目标是访问第一个“消息”,尽管它可以通过

 errors.product_name.message

这不是目标,我的目标是在不使用“product_name”对象的情况下获取第一条消息,例如

errors[0].message

【问题讨论】:

  • 您显示的内容中没有数组

标签: javascript node.js


【解决方案1】:

首先您需要知道,object 不是Set。顺序并不总是相同的(取决于迭代器的实现)。

通常给你声明键的顺序,但它不需要是真的。

然后,有一些方法可以得到你想要的。

Object.keys:

const keys = Object.keys(obj.errors);
const firstError = obj.errors[keys[0]];

Object.entries:

const entries = Object.entries(obj.errors);
const firstError = entries[0][1];

然后,如果您不需要所有键,则可以在第一个键处停止:

function getFirstKey(obj) {
  for (const k in obj) {
    return k;
  }
}

const firstError = obj.errors[getFirstKey(obj.errors)];

【讨论】:

    【解决方案2】:

    使用Object.entries 迭代错误并获取消息属性

    const obj = {
    	"errors": {
    		"product_name": {
    			"message": "Product name is required",
    			"name": "ValidatorError"
    		},
    		"category": {
    			"message": "Category is required",
    			"name": "ValidatorError"
    
    		}
    	}
    };
    
    const [,value] = Object.entries(obj.errors)[0];
    console.log(value.message);

    【讨论】:

    • 值得注意的是,即使使用 Object,entries() first 可能并不总是相同的属性键。整个事情看起来像是一个 XY 问题
    猜你喜欢
    • 2020-09-06
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 2013-01-02
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多