繁体   English   中英

Javascript - 如何摆脱数组中的所有方括号

[英]Javascript - How to get rid of all square brackets in a Array

我正在尝试从 Google 等网站获取标题数据,并且进展顺利。 问题是我需要去掉很多方括号,因为这些方括号导致了我如何使用它们的一些问题(我将它们设置为 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' 
}

我真的很喜欢帮助!

映射对象的条目以从每个条目中提取第一项,然后使用Object.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)。 但是,如果响应以字符串格式提供给您,则字符串操作将是您需要替换每一行中的第一个 '[' 和最后一个 ']' 的关键。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM