Javascript循环并过滤掉null或empty的数据

时间:2016-10-13 11:32:12

标签: javascript arrays

我有一些数据,我需要过滤掉null或空的数据,并创建一个过滤的新数据列表。

在这种情况下,有时"名称" array为null所以我需要输出数据。

{
    "people": [
        {
            "id": "2",
            "description": "desc here",
            "names": [
                {

                    "name": "name here",
                },
                {

                    "name": "name here",
                }
            ],
            "other": "0"
        },
        {
            "id": "200",
            "description": "desc here",
            "names": null
            "other": "0"
        },
        {
            "id": "64",
            "description": "desc here",
            "names": [
                {

                    "name": "name here",
                },
                {

                    "name": "name here",
                }
            ],
            "other": "1"
        }
    ]
}

我该怎么做?

3 个答案:

答案 0 :(得分:1)

您可以递归迭代数组和对象,直到找到基元。然后检查并返回值。

function copy(object) {
    var o;
    if (Array.isArray(object)) {
        return object.reduce(function (r, a) {
            var v = copy(a);
            v.names !== null && v.names !== '' && r.push(v);
            return r;
        }, []);
    }
    if (object !== null && typeof object === 'object') {
        o = {};
        Object.keys(object).forEach(function (k) {
            o[k] = copy(object[k]);
        });
        return o;
    }
    return object;
}

var data = { people: [{ id: "2", description: "desc here", names: [{ id: "345", name: "name here", }, { id: "54", name: "name here", foo: "", }], other: "0" }, { id: "2", description: "desc here", names: null, other: "0" }, { id: "64", description: "desc here", names: [{ id: "87", name: "name here", }, { id: "53", name: "name here", }], other: "1" }] },
    result = copy(data);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)

var newArray = oldArray.filter(function(v){return v!==''});

答案 2 :(得分:-1)

new_array=yourObject.people.filter(function(elem){
 return elem.names!==null && elem.names!==""
});