Удаление массива объектов из массива на основе условия - PullRequest
1 голос
/ 24 октября 2019

У меня есть массив json, как следует, и мне нужно фильтровать на основе следующих условий

например: Фильтровать и получить результат "Attribute1", который содержит "sad"

например: Фильтровать и получитьрезультат "SubAttribute1" из "Attribute2" содержит "tes"

Сочетание всех.
например: Отфильтруйте и получите результат «Attribute1», который содержит «sad»
ИЛИ «SubAttribute1» в «Attribute2» содержит «tes»
ИЛИ «SubAttribute2» в «Attribute3» содержит «tes»

Примечание: может быть сделано через чистый JavaScript или lodash (предпочтительно).

[
    {
        "Attribute1": [
            "sada",
            "dasa"
        ],
        "Attribute2": [{
            "SubAttribute1": "Test",
            "SubAttribute2": "sdasd"
        }, {
            "SubAttribute1": "sdsadsadas",
            "SubAttribute2": "sdsad"
        }],
        "Attribute3": [{
            "SubAttribute1": "sdasd",
            "SubAttribute2": "dsa"
        }, {
            "SubAttribute1": "sadasd",
            "SubAttribute2": "sadas"
        }]
    },
    {
        "Attribute1": [
            "ass",
            "sd"
        ],
        "Attribute2": [{
            "SubAttribute1": "dsad",
            "SubAttribute2": "xcxc"
        }, {
            "SubAttribute1": "erew",
            "SubAttribute2": "errer"
        }],
        "Attribute3": [{
            "SubAttribute1": "sdsdaasd",
            "SubAttribute2": "sdsa"
        }, {
            "SubAttribute1": "das",
            "SubAttribute2": "sad"
        }]
    }
]

1 Ответ

0 голосов
/ 24 октября 2019

Вы можете сделать:

const data = [{"Attribute1": ["sada","dasa"],"Attribute2": [{"SubAttribute1": "Test","SubAttribute2": "sdasd"}, {"SubAttribute1": "sdsadsadas","SubAttribute2": "sdsad"}],"Attribute3": [{"SubAttribute1": "sdasd","SubAttribute2": "dsa"}, {"SubAttribute1": "sadasd","SubAttribute2": "sadas"}]},{"Attribute1": ["ass","sd"],"Attribute2": [{"SubAttribute1": "dsad","SubAttribute2": "xcxc"}, {"SubAttribute1": "erew","SubAttribute2": "errer"}],"Attribute3": [{"SubAttribute1": "sdsdaasd","SubAttribute2": "sdsa"}, {"SubAttribute1": "das","SubAttribute2": "sad"}]}]

/**
  Combination of all.
  eg: Filter and get result "Attribute1" which contains "sad"
  OR "SubAttribute1" of "Attribute2" contains "tes"
  OR "SubAttribute2" of "Attribute3" contains "tes"
 */
const result = data.filter(
  obj => /sad/.test(obj.Attribute1.join(','))
    || obj.Attribute2.find(obj => /tes/.test(obj.SubAttribute1))
    || obj.Attribute3.find(obj => /tes/.test(obj.SubAttribute2))
)

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