JSON数据转换问题

var json = [
    {"id":"1","tagName":"apple"},
    {"id":"2","tagName":"orange"},
    {"id":"3","tagName":"banana"},
    {"id":"4","tagName":"watermelon"},
    {"id":"5","tagName":"pineapple"}
];

上面这段代码怎么转换为数组,
id = [1,2,3,4,5]
tagName = ["apple","orange","banana","watermelon","pineapple"]

阅读 3.2k
5 个回答
const id = [];
const tagName = [];
json.forEach((item) => {
    id.push(item.id);
    tagName.push(item.tagName);
})

可以参考Laravel框架的helper函数array_pluck():
图片描述

        function jsonToArray(json){
            var keys = Object.keys(json[0]),res=new Object();
            keys.forEach(function (t) {
                res[t]=[];
            });
            json.forEach(function (t) {
                keys.forEach(function (k) {
                    res[k].push(t[k]);
                })
            });
            return res;
        }
        

打印结果:{id: Array(0), tagName: Array(0)}id: (5) ["1", "2", "3", "4", "5"]tagName: (5) ["apple", "orange", "banana", "watermelon", "pineapple"]__proto__: Object

var ids = [];
var tagNames = [];
    for(var i of json){
        if(i.id){
            ids.push(i.id);
        }
        if(i.tagName){
            tagNames.push(i.tagName);
        }
    }

简单版

var id = json.map(v=>v.id);
var tagName = json.map(v=>v.tagName);

封装版

function jsonToArr(arr,key){
  return arr.reduce((sum,value)=>{
      for(var j in key){
        sum[j].push(value[j]);
      }
      return sum;
    },key)
}
console.log(jsonToArr(json,{"id":[],"tagName":[]}))//{"id":["1","2","3","4","5"],"tagName":["apple","orange","banana","watermelon","pineapple"]}
推荐问题