问题描述
我正在和邮递员一起做一个预请求脚本。 我从 API 访问标头,使用 res.headers 并获得
(20) [{…},{…},…]
0: {…}
key: "Date"
value: "Fri,30 Apr 2021 13:56:36 GMT"
如何从此处的日期获取值? typeof(res.headers) 返回它的一个对象,但在我看来它就像一个对象数组。我尝试了不同的版本,如 res.headers[0]、res.headers['Date'] 等。
解决方法
在您的问题中编辑一些关于您的堆栈是什么样子的信息可能会有所帮助(即,这是否是带有某种中间件的 Express 或其他东西)。
您拥有的是 Array 的 Objects。如果您打算从 value
值为 key
的对象的 Date
键中提取数据,您必须首先以某种方式首先在数组中找到该特定对象,然后提取其value
:
const dateValue = res.headers.find(cv => cv.key === "Date").value;
进一步阅读:Array.prototype.find()
你可以试试这个例子片段:
let outputData = [
{key : 'Date',value: 'Fri,30 Apr 2021 13:56:36 GMT'},{key : 'Test',value: 'TestingValue'}
];
// filter out the object from the array containing key as Date.
let filteredData = outputData.filter((obj) => (obj.key == "Date"));
/* .filter returns a list of all the objects from the array matching the condition. So we fetch the first object from the filteredData array using index as filteredData[0] and fetch its value attribute */
console.log(filteredData[0].value);
Output: Fri,30 Apr 2021 13:56:36 GMT
,
为了避免每次要访问特定属性时都必须遍历 headers 数组,您可能需要将其重构为更易于访问的形式。这里使用 Object.assign()
并映射 res.headers
数组以返回单个对象。
const res = {
headers: [
{
key: "Date",value: "Fri,30 Apr 2021 13:56:36 GMT"
},{
key: "Server",value: "Apache"
}
]
};
const headers = Object.assign({},...res.headers.map(({ key,value }) => ({ [key]: value })));
// {
// "Date": "Fri,30 Apr 2021 13:56:36 GMT",// "Server": "Apache"
// }
console.log(headers.Date);