繁体   English   中英

Typeescript如何根据特定属性是否存在过滤对象数组

[英]Tyepescript how to filter an array of objects depending on a specific property exists or not

我尝试根据对象是否具有特定属性来过滤对象。

例子:

objectArray = [{a: "", b: ""}, {a: ""}]
objectArray.filter( obj => "b" in obj ).forEach(obj => console.log(**obj.b**))

typescript 抱怨 obj.b,因为某些对象没有 b 属性,但由于我将它们过滤掉,所以不应该。 我在做什么/弄错了。

在初始化它的同一语句中声明objectArray (使用letconst )。 这将允许 TypeScript 正确推断表达式objectArray.filter( obj => "b" in obj )的类型,即

const objectArray = [{a: "", b: ""}, {a: ""}];
objectArray.filter( obj => "b" in obj ).forEach(obj => console.log(obj.b)); // no error

游乐场链接

Objects.keys 可以帮助你

objectArray.filter(x=> Object.keys(x).indexOf('b')>=0 );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM