我有一个包含一个对象的数组:
$("#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做到这一点?
非常感谢示例!
感谢您的时间
答案 0 :(得分:1)
所有对象都有名为"值"的键。将其更改为您需要的任何内容。
var out = Object.keys(arr[0]).map(function (el) {
return { value: arr[0][el] };
});
这会从对象中获取键,并使用map
使用原始对象的键/值对中的值返回一个填充了对象的新数组。
答案 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提案
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;