Lodash 4如何省略键名包含指定字符串(如_old)的对象属性
解决方案
Lodash 的 omit 方法原生支持传入谓词函数作为第二个参数,不需要仅传入固定属性名数组。你之前的写法失效是因为数组内的字符串会被当做精确匹配的属性名,只会删除键名完全等于_old的属性,无法模糊匹配包含该字符串的键。
写法1:直接使用谓词函数(推荐,仅遍历一次对象)
filteredFields() { return omit(this.myObj, (value, key) => { // 返回true的属性会被移除 return key === 'name' || key.includes('_old') }) }
写法2:先收集所有待删除键再传入
如果需要单独维护要删除的键列表,可以先筛选出所有带_old的键,再和固定要删除的键合并传入:
filteredFields() { // 筛选所有键名包含_old的属性 const oldKeys = Object.keys(this.myObj).filter(key => key.includes('_old')) return omit(this.myObj, ['name', ...oldKeys]) }
两种写法都可以实现同时删除name属性和所有键名带_old的属性的需求。
内容的提问来源于stack exchange,提问作者redshift
相关产品推荐
相关产品推荐

