我一直在想办法把一个数组变成一个包含对象的数组。
例如我有一个 json 文件开始,json 文件看起来像这样
var data=[{"tasknumber":304030,
"date":"2012-05-05",
"operator":"john doe"},
{"tasknumber":23130,
"date":"2012-07-07",
"operator":"john doeeeeeeee"},
{"tasknumber":233330,
"date":"2012-08-08",
"operator":"john doe"}]
所以我应用了 underscore.js 库中的 _.countBy 函数,我得到了一个这样的对象
{"john doe":2,"john doeeeeeeee":1}
我一直在想办法把它变成一个带有对象的数组,所以它看起来像这样,但我每次尝试都失败了,我不知道该从哪里开始
[{operator:"john doe",
count: 2},
{operator: "john doeeeeeeee",
count:1}]
我已经尝试了一些方法,但我得到的只是悲剧,一切都崩溃了,有谁知道是否有任何图书馆或任何东西可以帮助解决这类问题?
最佳答案
给定对象(不是数组){"john doe":2,"john doeeeeeeee":1}
作为输入,您可以像这样获得所需的输出:
var input = {"john doe":2,"john doeeeeeeee":1};
var output = Object.keys(input).map(function(k) {
return {
operator: k,
count: input[k]
};
});
console.log(output);
或者用 ES6 箭头函数语法:
var input = {"john doe":2,"john doeeeeeeee":1};
var output = Object.keys(input).map((k) => ({ operator: k, count: input[k] }) );
console.log(output);
(请注意,Underscore 可能提供了一种更短的方法来执行此操作,但我对 Underscore 不熟悉,所以我只提供了一个普通的 JS 解决方案。)
进一步阅读:
关于javascript - 将数组转换为包含对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41273939/