Что вы также можете сделать, это использовать Array.reduce
и каждый раз проверять, есть ли ключ с _not
, и каково его значение.Если есть, вы можете отслеживать это в объекте summary
в аккумуляторе:
const rules = [ {rule: "name_is", value: "Test"}, {rule: "surname_is", value: "Foo"}, {rule: "surname_is_not", value: "Bar"}, {rule: "name_is_not", value: "Test"} ]
const result = rules.reduce((r,{rule, value}) => {
let key = rule.replace('_not', '')
r[key] == value ? r.summary[rule] = `same as ${key}` : r[rule] = value
return r
}, {summary: {}}).summary
console.log(result) // "name_is_not": "same as name_is"