Удалить данную запись из объекта в JavaScript - PullRequest
1 голос
/ 18 апреля 2019

Привет всем с функцией, я хочу удалить запись (которую я даю в качестве аргумента) из объекта (который я также даю в качестве аргумента).Чтобы было понятнее, я предоставлю вам код.

Вот объект, из которого я хочу удалить запись:

const register = {
    aap :[{condition: {aap:'aap'}, func: 'fun'}],
    aap1 :[{condition: {aap1:'aap1'}, func: 'fun'},{condition: {aap2:'aap2'}, func: 'fun'}],
};

Запись, которую я хочу удалить, выглядит следующим образом: {aap:'aap'}

Затем я бы вызвалфункция как это myfunction(register,{aap:'aap'})

В вышеупомянутом случае удалите данный объект условия из регистра.

Теперь вот что я построил сам:

const register = {
    aap :[{condition: {aap:'aap'}, func: 'fun'}],
    aap1 :[{condition: {aap1:'aap1'}, func: 'fun'},{condition: {aap2:'aap2'}, func: 'fun'}],
};



function hallo(register,condition){
    const objKeys = [];

    for(key in register){
        objKeys.push(key);
    }

    objKeys.forEach(function(el){
       console.log(register[el]);
    })

}

hallo(register);

Я понял, какчтобы получить некоторые результаты, которые я мог бы использовать для удаления из:

[ { condition: { aap: 'aap' }, func: 'fun' } ]
[ { condition: { aap1: 'aap1' }, func: 'fun' },
  { condition: { aap2: 'aap2' }, func: 'fun' } ]

Но я все еще не понял, как удалить запись, которая соответствует той, которую я даю в своей функции.

Длинная историякороткая.Я хочу функцию, которая содержит 2 аргумента.Один аргумент - это регистр (объект, из которого я хотел бы удалить), а второй - условие, которое я хотел бы удалить.

После возврата функции желаемый результат должен быть:

const register = {
    aap :[{condition: {}, func: 'fun'}],
    aap1 :[{condition: {aap1:'aap1'}, func: 'fun'},{condition: {aap2:'aap2'}, func: 'fun'}],
};

Регистр минус условие, которое я хотел удалить.

1 Ответ

3 голосов
/ 18 апреля 2019

Вы можете использовать рекурсивный подход, перебирая все ключи объекта и проверяя, находится ли ключ в value, и удаляя этот ключ в объекте.

Приступить к вложенным объектам.

function remove(object, value) {
    Object.keys(object).forEach(key => {
        if (key in value && object[key] === value[key]) {
            delete object[key];
            return;
        }
        if (object[key] && typeof object[key] === 'object') {
            remove(object[key], value);
        }
    });
    return object;
}

const register = { aap: [{ condition: { aap: 'aap' }, func: 'fun' }], aap1: [{ condition:  {aap1: 'aap1' }, func: 'fun' }, { condition: { aap2: 'aap2' }, func: 'fun' }] };

console.log(remove(register, { aap: 'aap' }));
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...