数组转换为json

var arr =  [
            {title: "aaa",category: "A"},
            {title: "bbb",category: "B"},
            {title: "ccc",category: "C"},
            {title: "ddd",category: "A"}
];
var obj = {
    "A":["aaa","bbb"],
    "B":["bbb"],
    "C":["ccc"]
};

怎么把上面的数组转换为下面哪种形式的?我真的不是伸手党 我真的想了好久了 帮帮我吧

阅读 4.7k
5 个回答
var arr =  [
    {title: "aaa",category: "A"},
    {title: "bbb",category: "B"},
    {title: "ccc",category: "C"},
    {title: "ddd",category: "A"}
];
var obj = []
arr.map((i) => {
    obj[i.category] = obj[i.category] || []
    obj[i.category].push(i.title)
});
console.log(obj)
var arr =  [
    {title: "aaa",category: "A"},
    {title: "bbb",category: "B"},
    {title: "ccc",category: "C"},
    {title: "ddd",category: "A"}
];

var obj = {};

arr.forEach(function (ele) {
    if (!obj[ele.category]) {
        obj[ele.category] = [];
    }
    obj[ele.category].push(ele.title);
});
function reindexArray(array){
    var newArray = [];
    array.forEach(function(item){
        if(newArray[item.category]===undefined) newArray[item.category]=[];
        newArray[item.category].push(item.title);
    });
    return newArray;
}

//test
console.log(reindexArray(arr));
var arr =  [
            {title: "aaa",category: "A"},
            {title: "bbb",category: "B"},
            {title: "ccc",category: "C"},
            {title: "ddd",category: "A"}
];

var obj = {};

arr.forEach(function(item) {
    obj[item.category] ? obj[item.category].push(item.title) 
        : obj[item.category] = [item.title];
});

console.log(obj);

另外可以用ES6的map集合,思路都是差不多的

By the way

//这两种方式是等价的。。。。。题注
var obj = {A: ['23333']} 
var x = {"A": ["2333"]}
obj.A  //输出["23333"]
x.A   //输出 ["23333"]

而且你问题中的obj不是所谓的json格式,obj就是javascript对象。。。
这些是基础概念,你可以看看这里关于对象字面量与json

JSON字串
JSON.stringify(arr)
JSON.stringify(obj)

如果用 ES6 可以

const obj = {};

arr.map(({ title, category }) => {
  obj[category] = category in obj
    ?  obj[category].concat(title)
    :  [title];
});

console.log(JSON.stringify(obj, null, 2)); 
/*
{
  "A": [
    "aaa",
    "ddd"
  ],
  "B": [
    "bbb"
  ],
  "C": [
    "ccc"
  ]
}
*/
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题