Dam*_*ian 60 javascript field object undefined
有没有一种干净的方法从对象中删除未定义的字段?
即
> var obj = { a: 1, b: undefined, c: 3 }
> removeUndefined(obj)
{ a: 1, c: 3 }
Run Code Online (Sandbox Code Playgroud)
我遇到了两个解决方案:
_.each(query, function removeUndefined(value, key) {
if (_.isUndefined(value)) {
delete query[key];
}
});
Run Code Online (Sandbox Code Playgroud)
要么:
_.omit(obj, _.filter(_.keys(obj), function(key) { return _.isUndefined(obj[key]) }))
Run Code Online (Sandbox Code Playgroud)
Rot*_*eti 103
使用ES6箭头功能和三元运算符的单线程:
Object.keys(obj).forEach(key => obj[key] === undefined ? delete obj[key] : '');
Run Code Online (Sandbox Code Playgroud)
或者使用短路评估而不是三元:( @Matt Langlois,感谢您的信息!)
Object.keys(obj).forEach(key => obj[key] === undefined && delete obj[key])
Run Code Online (Sandbox Code Playgroud)
使用if表达式的相同示例:
Object.keys(obj).forEach(key => {
if (obj[key] === undefined) {
delete obj[key];
}
});
Run Code Online (Sandbox Code Playgroud)
如果你想删除__CODE__,__CODE__并__CODE__使用__CODE__替代__CODE__.
如果要从嵌套对象中删除项目,可以使用递归函数:
const removeEmpty = (obj) => {
Object.keys(obj).forEach(key => {
if (obj[key] && typeof obj[key] === 'object') removeEmpty(obj[key]);
else if (obj[key] === undefined) delete obj[key];
});
return obj;
};
Run Code Online (Sandbox Code Playgroud)
nma*_*ran 48
var obj = { a: 1, b: undefined, c: 3 }
要删除undefined对象中的道具,我们就像这样使用
JSON.parse(JSON.stringify(obj));
输出: {a: 1, c: 3}
Thi*_*man 43
我更喜欢使用像Lodash这样的东西:
import { pickBy, identity } from 'lodash'
const cleanedObject = pickBy(originalObject, identity)
Run Code Online (Sandbox Code Playgroud)
请注意,标识函数是正确的,x => x并且对于所有伪值,其结果将为false .所以这删除了undefined,"",0,null,...
如果您只想undefined删除值,则可以执行以下操作:
const cleanedObject = pickBy(originalObject, v => v !== undefined)
Run Code Online (Sandbox Code Playgroud)
它为您提供了一个新对象,通常比改变原始对象更好,就像其他一些答案所暗示的那样.
小智 12
该解决方案还避免了hasOwnProperty()作为Object.keys返回给定对象的自己的枚举的属性的阵列.
Object.keys(obj).forEach(function (key) {
if(typeof obj[key] === 'undefined'){
delete obj[key];
}
});
Run Code Online (Sandbox Code Playgroud)
你可以将其添加为null或''更严格的清洗.
pti*_*tim 12
因为它似乎没有被提及,这是我的首选方法,没有副作用或外部依赖:
const obj = {
a: 1,
b: undefined
}
const newObject = Object.keys(obj).reduce((acc, key) => {
const _acc = acc;
if (obj[key] !== undefined) _acc[key] = obj[key];
return _acc;
}, {})
console.log(newObject)
// Object {a: 1}Run Code Online (Sandbox Code Playgroud)
这是一个简单的 javascript(不需要库)解决方案:
function removeUndefinedProps(obj) {
for (var prop in obj) {
if (obj.hasOwnProperty(prop) && obj[prop] === undefined) {
delete obj[prop];
}
}
}
Run Code Online (Sandbox Code Playgroud)
工作演示:http://jsfiddle.net/jfriend00/djj5g5fu/
| 归档时间: |
|
| 查看次数: |
63493 次 |
| 最近记录: |