如何将键:"value" 转换为键:["value"] in Javascript?
How to convert key: "value" to key:["value"] in Javascript?
我有一个对象列表,我在其中得到一个看起来像这样的键值对:
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"],
.
.
}
遍历对象条目。如果该值不是数组,请将其替换为包含该值的单元素数组。
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))
我有一个对象列表,我在其中得到一个看起来像这样的键值对:
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"],
.
.
}
遍历对象条目。如果该值不是数组,请将其替换为包含该值的单元素数组。
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))