SOURCE

function reactive(creat) {
    for (let key in creat) {
        if (typeof creat[key] == 'object') creat[key] = reactive(creat[key])
    }
    return new Proxy(creat, {
        get: function (target, key) {
            return target[key]
        },
        set: function (target, key, value) {
            if (typeof value == 'object') value = reactive(value)
            target[key] = value
        }
    })
}
items = reactive({
    search: function (attr, operator, value) {
        return this.list.filter(v => {
            let flag = false
            switch (operator) {
                case '=':
                    flag = eval(v[attr] == value)
                    break
                case '==':
                    flag = eval(v[attr] == value)
                    break
                case '>':
                    flag = eval(v[attr] > value)
                    break
                case '>=':
                    flag = eval(v[attr] >= value)
                    break
                case '<':
                    flag = eval(v[attr] > value)
                    break
                case '<=':
                    flag = eval(v[attr] <= value)
                    break
            }
            return flag
        })

    },
    list: [
        { name: "战甲" }
    ]
})

console.log(items.search('name', '=', '战甲'))
console 命令行工具 X clear

                    
>
console