Javascript-如何去除数组中的所有方括号



我正在尝试从谷歌等网站获取头部数据,进展顺利。问题是我需要去掉很多方括号,因为这些方括号会导致我使用它们的方式出现一些问题(我在Node.js应用程序中将它们设置为响应头(。

{
date: [ 'Thu, 03 Sep 2020 03:45:32 GMT' ],
expires: [ '-1' ],
'cache-control': [ 'private, max-age=0' ],
'content-type': [ 'text/html; charset=UTF-8' ],
'strict-transport-security': [ 'max-age=31536000' ],
p3p: [ 'CP="This is not a P3P policy! See g.co/p3phelp for more info."' ],
'content-encoding': [ 'gzip' ],
server: [ 'gws' ],
'x-xss-protection': [ '0' ],
'set-cookie': [
'NID=204=U6hVPXuZiH-T-DjyvLXiq9L5i3xt5TfKvTA0hY0EgPeksXwFjezsQfVjatUfj909sP1hCdyea3HxiycPT9oCBwS7JSFI6c5LivCkZZ2zJddeV_mx05I14piRoBAsOJQKtOKeMU8onSaOntLIRFZ8qp2qM1mhj54djbua_5WH_3M; expires=Fri, 05-Mar-2021 03:45:32 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=none'
],
'alt-svc': [
'h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"'
],
'transfer-encoding': [ 'chunked' ]
}

应该是

{
date:  'Thu, 03 Sep 2020 03:45:32 GMT' ,
expires:  '-1' ,
'cache-control':  'private, max-age=0' ,
'content-type':  'text/html; charset=UTF-8' ,
'strict-transport-security':  'max-age=31536000' ,
p3p:  'CP="This is not a P3P policy! See g.co/p3phelp for more info."' ,
'content-encoding':  'gzip' ,
server:  'gws' ,
'x-xss-protection':  '0' ,
'set-cookie': 
'NID=204=U6hVPXuZiH-T-DjyvLXiq9L5i3xt5TfKvTA0hY0EgPeksXwFjezsQfVjatUfj909sP1hCdyea3HxiycPT9oCBwS7JSFI6c5LivCkZZ2zJddeV_mx05I14piRoBAsOJQKtOKeMU8onSaOntLIRFZ8qp2qM1mhj54djbua_5WH_3M; expires=Fri, 05-Mar-2021 03:45:32 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=none'
,
'alt-svc': 
'h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"'
,
'transfer-encoding':  'chunked' 
}

我真的很乐意得到帮助!

映射对象的条目以从每个条目中提取第一个条目,然后将其返回为对象WithObject.fromEntries:

const output = Object.fromEntries(
Object.entries(input)
.map(([key, val]) => [key, val[0]])
);

const input = {
date: [ 'Thu, 03 Sep 2020 03:45:32 GMT' ],
expires: [ '-1' ],
'cache-control': [ 'private, max-age=0' ],
'content-type': [ 'text/html; charset=UTF-8' ],
'strict-transport-security': [ 'max-age=31536000' ],
p3p: [ 'CP="This is not a P3P policy! See g.co/p3phelp for more info."' ],
'content-encoding': [ 'gzip' ],
server: [ 'gws' ],
'x-xss-protection': [ '0' ],
'set-cookie': [
'NID=204=U6hVPXuZiH-T-DjyvLXiq9L5i3xt5TfKvTA0hY0EgPeksXwFjezsQfVjatUfj909sP1hCdyea3HxiycPT9oCBwS7JSFI6c5LivCkZZ2zJddeV_mx05I14piRoBAsOJQKtOKeMU8onSaOntLIRFZ8qp2qM1mhj54djbua_5WH_3M; expires=Fri, 05-Mar-2021 03:45:32 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=none'
],
'alt-svc': [
'h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"'
],
'transfer-encoding': [ 'chunked' ]
};
const output = Object.fromEntries(
Object.entries(input)
.map(([key, val]) => [key, val[0]])
);
console.log(output);

如果您首先不确定一个值是否为数组,那么请使用

.map(([key, val]) => [key, Array.isArray(val) ? val[0] : val])

如果响应作为JavaScript对象对您可用,您可以简单地遍历所有条目,并将条目值设置为字符串值来代替数组(使用for of(。但是,如果响应以字符串格式提供,则字符串操作将是您需要替换每行中第一个"["和最后一个"]"的关键。

但是,您需要检查原始值是否实际上是一个数组。

最新更新