【问题标题】:How to convert key: "value" to key:["value"] in Javascript?如何在Javascript中将键:“值”转换为键:[“值”]?
【发布时间】:2021-01-27 19:16:01
【问题描述】:

我有一个对象列表,其中我得到一个看起来像这样的键值对:

Object {
  key1 : "value1",
  key2 : ["value2", "value3", "value4"], 
  key3 : ["value5", "value6"],
  key4 : "value7",
  .
  .
} 

我正在循环打印这些值,如下所示:

Object.key1[i], Object.key2[i], Object.key3[i]...

正如您所见,key1[i] 将打印“v”,因为它不是数组。
如何转换这些字符串值并覆盖同一个对象?
这就是我希望对象在覆盖后的样子:

Object {
  key1 : ["value1"],
  key2 : ["value2", "value3", "value4"], 
  key3 : ["value5", "value6"],
  key4 : ["value7"],
  .
  .
} 

【问题讨论】:

  • 您需要分享更多详细信息,key1 和 key4 值是否始终是字符串?
  • @sonali ,不,它们不一定是字符串。但我现在得到了答案。谢谢!

标签: javascript arrays javascript-objects key-value


【解决方案1】:

遍历对象条目。如果值不是数组,则将其替换为包含该值的单元素数组。

Object.entries.forEach(([key, value]) => {
    if (!Array.isArray(value)) {
        Object[key] = [value];
    }
});

【讨论】:

  • 谢谢@Barmar !,我使用了你的 sn-p 的一个小不同版本,它工作得很好
【解决方案2】:

迭代您的对象,如果不是数组,则将其设为数组

const obj = {
  key1 : "value1",
  key2 : ["value2", "value3", "value4"], 
  key3 : ["value5", "value6"],
  key4 : "value7",
  .
  .
} 

Object.keys(obj).forEach(key => {
  const value = obj[key]
  if(!Array.isArray(v) {
    obj[key] = [v]
  }
}

【讨论】:

    【解决方案3】:

    您需要做的是使用typeof 来检查该值是否为字符串。

    if (typeof obj.key1 === 'string') // do something with it....
    

    因为现在发生的事情是您正在对字符串执行 obj.key1[i],而您没有从数组中获取条目 i,而是从字符串中获取字符 i

    但是您的代码还有其他问题,例如 Object 是保留字,并且您没有等号将值分配给对象。

    【讨论】:

      【解决方案4】:

      只需映射对象并创建它的浅表副本(例如通过 reduce)

      const valuesToArray = (object) => Object.entries(object).reduce(
        (result, [key, value]) => ({
          [key]: Array.isArray(value) ? value : [value],
           ...result,
         }),
         {},
      )
      
      const test = { a: 'a', b: ['b', 'b'], c: 'ccccc' }
      console.log(valuesToArray(test))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-13
        • 2021-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-28
        • 2019-12-21
        相关资源
        最近更新 更多