是否有一种单行代码可以将未知大小的字典的键和值连接成 JS 中的字符串?

Is there a one-liner to concatenate the key and values of a dict of unknown size into a string in JS?

我正在尝试尽可能优雅地将字典解析为一行中的字符串。

字符串可以包含 1 到 10 个键值对。

我的字典:

var dict = {
  rel: 'preload', 
  as: 'image', 
  type: 'image/webp'
}

我正在尝试将其解析为查询字符串,将其转换为:

return "rel='preload' as='image' type='image/webp'"

我知道使用 Object.keys 和 forEach 我可以遍历 Dict 但我如何在同一语句中也连接它?

这是我的进度:

Object.keys(dict).forEach(key => console.log(`${key}="${dict(key)}"`) ) 

如何在同一行中连接结果?可能吗? 我一直在尝试:

.reduce()
.push()
.concat()
.join()

但似乎无法让它在一行中工作。

您可以使用 reduce:

const dict = {
  rel: 'preload', 
  as: 'image', 
  type: 'image/webp'
};

let result = Object.keys(dict).reduce((acc, key) => acc + `${key}=${dict[key]} ` ,'');

console.log(result);

这条线可能适合你:

const dict = {
  rel: 'preload', 
  as: 'image', 
  type: 'image/webp'
};

const result = Object.entries(dict).map(item => `${item[0]} = '${item[1]}'`).join(' ')

console.log(result)

这是获得所需结果的一种方法。

const dict = {
  rel: 'preload', 
  as: 'image', 
  type: 'image/webp'
};
console.log(
  Object.entries(dict)
  .map(([k, v]) => (`${k}='${v}'`))
  .join(' ')
);

它使用

  • Object.entries() - 从对象
  • 获得key-value对
  • .map() - 遍历 key-value 对
  • 反引号 ` - 将每对转换为所需的结构
  • .join() - 最终将数组转换为字符串