JavaScript - 将数组中的大对象转换为对象数组

时间:2016-03-30 16:31:37

标签: javascript arrays reactjs javascript-objects

我有一个包含一个对象的数组:

$("#col-navigation a").click(function(e) {
   var getText = $(this).text().trim().toLowerCase();
   $("#"+getText).toggle().siblings().hide();
   e.preventDefault();
});

理想情况下,我需要它看起来更像这样:

[
    {
        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"
    }
]

如果可能的话,我也想替换对象的键,以便它们都是一样的。

有没有办法可以用JavaScript做到这一点?

非常感谢示例!

感谢您的时间

4 个答案:

答案 0 :(得分:1)

所有对象都有名为"值"的键。将其更改为您需要的任何内容。

var out = Object.keys(arr[0]).map(function (el) {
  return { value: arr[0][el] };
});

这会从对象中获取键,并使用map使用原始对象的键/值对中的值返回一个填充了对象的新数组。

DEMO

答案 1 :(得分:0)

您可以映射数组中第一个对象的键(使用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);

答案 2 :(得分:0)

这可以通过使用var glob = require('glob'); gulp.task('vendor-js', function () { var js = glob.sync('../vendor/**/*.js'); if (isProduction) { // use <file>.min.js, unless there is only <file>.js js = js.filter(function(file) { return file.match(/\.min\.js$/) || js.indexOf(file.replace(/\.js$/, '.min.js')) < 0; }); } else { // use <file>.js, unless there is only <file>.min.js js = js.filter(function(file) { return !file.match(/\.min\.js$/) || js.indexOf(file.replace(/\.min\.js$/, '.js')) < 0; }); } gulp.src(js, { base: '../vendor' }) .pipe($.if(isProduction, // only minify for prod and when $.if("!**/*.min.js", uglify()))) // the file isn't minified already .pipe(gulp.dest('build')); }); forEach

来解决
map

...或使用普通循环:

var result = []
arrayOfObjects.forEach(function(object) {
  result = result.concat(Object.keys(object).map(function(key) {
    return {
      value: object[key]
    }
  }))
})
console.log(result)

答案 3 :(得分:0)

ES5提案

&#13;
&#13;
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>');
&#13;
&#13;
&#13;