我有一个过滤数据的问题,这是我的数据:

var data = {
    CustomerInfo: [{ id : 3, name: "c" }],
    detail: {company: "Google"},
    location: {country: "Italy"},
    CustomerInfo2: [{ id : 4, name: "d" }]
};


我想打印不是对象格式(data[x][x] !== 'object')的每个名称。例如,仅打印“公司”和“国家”。
这是我的代码:

var dataFiltered = Object.keys(data).filter(function(parent){

    return Object.keys(data[parent]).filter(function(child){
      return typeof data[parent][child] !== 'object';
    });

}).reduce(function(prev, child) {
  console.log(prev + " >>> " + data[child]);
});


我对过滤器内部的过滤器感到困惑。

最后我想要这个结果:

company >>> Google
country >>> Italy

最佳答案

你可以做



var data = {
    CustomerInfo: [{ id : 3, name: "c" }],
    detail: {company: "Google"},
    location: {country: "Italy"},
    CustomerInfo2: [{ id : 4, name: "d" }]
};

let result = Object.keys(data).reduce((a, b) => {
    if(typeof data[b] == 'object'){
        for(let element of Object.keys(data[b])){
            if(typeof data[b][element] != 'object'){
                a.push(data[b][element]);
                console.log(element, '>>>', data[b][element]);
            }
        }
    }
    return a;
},[]);

console.log(result)

关于javascript - 在JavaScript的filter()中使用filter(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46411433/

10-09 20:13