JavaScript - 将数组中的大对象转换为对象数组
JavaScript - convert large object in an array to an array of objects
我有一个包含一个对象的数组:
[
{
value 0: "value",
value 1: "value",
value 2: "value",
value 3: "value",
value 4: "value",
value 5: "value",
value 6: "value",
value 7: "value",
value 8: "value",
value 9: "value"
}
]
理想情况下,我需要它看起来更像这样:
[
{
value 0: "value"
},
{
value 1: "value"
},
{
value 2: "value"
},
...
]
如果可能我也想替换对象的键,使它们都一样。
有什么方法可以用 JavaScript 做到这一点吗?
示例将不胜感激!
感谢您的宝贵时间
您可以映射数组中第一个对象的键(使用 ECMAScript 2015):
var data = [{
'value 0': 'value',
'value 1': 'value',
'value 2': 'value',
'value 3': 'value',
'value 4': 'value',
'value 5': 'value',
'value 6': 'value',
'value 7': 'value',
'value 8': 'value',
'value 9': 'value'
}];
var first = data[0];
var result = Object.keys(first).map(key => ({ [key]: first[key] }));
console.log(result);
这可以通过使用 forEach
和 map
来解决:
var result = []
arrayOfObjects.forEach(function(object) {
result = result.concat(Object.keys(object).map(function(key) {
return {
value: object[key]
}
}))
})
console.log(result)
...或使用普通循环:
var result = []
for (var i = 0; i < arrayOfObjects.length; i++) {
var object = arrayOfObjects[i]
for (var key in object) {
result.push({
value: object[key]
})
}
}
console.log(result)
关于 ES5 的提议
function format(object, array) {
Object.keys(object).forEach(function (k) {
var o = {};
o[k] = object[k];
array.push(o);
});
}
var data = [{ 'value 0': "value", 'value 1': "value", 'value 2': "value", 'value 3': "value", 'value 4': "value", 'value 5': "value", 'value 6': "value", 'value 7': "value", 'value 8': "value", 'value 9': "value" }],
formated = [];
format(data[0], formated)
document.write('<pre>' + JSON.stringify(formated, 0, 4) + '</pre>');
所有对象都有名为 "value" 的键。将其更改为您需要的任何内容。
var out = Object.keys(arr[0]).map(function (el) {
return { value: arr[0][el] };
});
这从对象中获取键,并使用 map
,returns 一个新数组,其中填充了使用原始对象的 key/value 对中的值的对象。
我有一个包含一个对象的数组:
[
{
value 0: "value",
value 1: "value",
value 2: "value",
value 3: "value",
value 4: "value",
value 5: "value",
value 6: "value",
value 7: "value",
value 8: "value",
value 9: "value"
}
]
理想情况下,我需要它看起来更像这样:
[
{
value 0: "value"
},
{
value 1: "value"
},
{
value 2: "value"
},
...
]
如果可能我也想替换对象的键,使它们都一样。
有什么方法可以用 JavaScript 做到这一点吗?
示例将不胜感激!
感谢您的宝贵时间
您可以映射数组中第一个对象的键(使用 ECMAScript 2015):
var data = [{
'value 0': 'value',
'value 1': 'value',
'value 2': 'value',
'value 3': 'value',
'value 4': 'value',
'value 5': 'value',
'value 6': 'value',
'value 7': 'value',
'value 8': 'value',
'value 9': 'value'
}];
var first = data[0];
var result = Object.keys(first).map(key => ({ [key]: first[key] }));
console.log(result);
这可以通过使用 forEach
和 map
来解决:
var result = []
arrayOfObjects.forEach(function(object) {
result = result.concat(Object.keys(object).map(function(key) {
return {
value: object[key]
}
}))
})
console.log(result)
...或使用普通循环:
var result = []
for (var i = 0; i < arrayOfObjects.length; i++) {
var object = arrayOfObjects[i]
for (var key in object) {
result.push({
value: object[key]
})
}
}
console.log(result)
关于 ES5 的提议
function format(object, array) {
Object.keys(object).forEach(function (k) {
var o = {};
o[k] = object[k];
array.push(o);
});
}
var data = [{ 'value 0': "value", 'value 1': "value", 'value 2': "value", 'value 3': "value", 'value 4': "value", 'value 5': "value", 'value 6': "value", 'value 7': "value", 'value 8': "value", 'value 9': "value" }],
formated = [];
format(data[0], formated)
document.write('<pre>' + JSON.stringify(formated, 0, 4) + '</pre>');
所有对象都有名为 "value" 的键。将其更改为您需要的任何内容。
var out = Object.keys(arr[0]).map(function (el) {
return { value: arr[0][el] };
});
这从对象中获取键,并使用 map
,returns 一个新数组,其中填充了使用原始对象的 key/value 对中的值的对象。