javascript - 将数组转换为包含对象的数组

标签 javascript arrays json underscore.js

我一直在想办法把一个数组变成一个包含对象的数组。

例如我有一个 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/

相关文章:

javascript - 当没有属性时如何调用指令?

ios - 类型转换数组的最有效方法

java - 无法解析来自服务器的 JSON 数据

python - 从 3 维数组生成列表

java - 通过二维数组重新开始迭代

javascript - 有没有一种安全的方法来防止 exec 剥离引号?

java - 如何从 json 字符串中获取值

javascript - promise 中的 promise

javascript - 在 iOS 上切换 HTML 视频可见性

javascript - 滚动到下一部分