微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Javascript 中将 key:"value" 转换为 key:["value"]?

如何解决如何在 Javascript 中将 key:"value" 转换为 key:["value"]?

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

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"],key4 : ["value7"],.
  .
} 

解决方法

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

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

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

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]
  }
}
,

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

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

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

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

,

只需映射对象并创建它的浅拷贝(例如通过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))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。