javascript - 将类似的 JSON 对象分组到数组中

标签 javascript angularjs

我有一个库返回的模型,格式如下:

var givenData = [{"fName": "john"}, {"fName": "mike"}, {"country": "USA"}]

如何将“fName”组合在一起并添加“[]”以获得:

{ 'fName[]': ['john','mike'],'country[]': ['USA'] };

**注意 countryfName 完全不相关。

最佳答案

建议(使用ES6语法)

const transformData = (data) => {
  const newData = {}
  data.forEach( (item) => {
    for (let key in item) {
       const newKey = key + "[]"
       if (!newData.hasOwnProperty(newKey)) newData[newKey] = []
       newData[newKey].push(item[key])
    }
  })
  return newData
}

/* added some extra keys just to test */
let givenData = [
  {"fName": "john", "country": "England"}, 
  {"fName": "mike"}, 
  {"country": "USA"},
  {"language": "English"}
]

console.log(transformData(givenData))
/*
{
    "fName[]": ["john","mike"],
    "country[]": ["England","USA"],
    "language[]":["English"]
}
*/

关于javascript - 将类似的 JSON 对象分组到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42077841/

相关文章:

javascript - jQuery 获取被点击元素的父 jQuery 对象

javascript - 查找 cookie 字符串中存在的 cookie - javascript

javascript - 如何在 angularjs 中将 ng-class 与服务中的 bool 值一起使用?

javascript - 响应式设计在 Angular 2 中是如何工作的?

javascript - 在子页面上将父元素标记为事件

javascript - 如何捕获多个id?

javascript - AngularJS:ng-checked 没有真正绑定(bind)

html - 类型错误 : Cannot read property 'protocol' of undefined Angular JS

javascript - Ng-repeat 根据所选单选答案隐藏单选按钮

javascript - ES6 解构