如何过滤对象具有JS中的tagId或keywordId属性的对象数组?

问题描述

我有一个对象数组,我试图通过检查对象是否具有属性tagId或keywordId对其进行过滤。我考虑过,但是不确定是否正确。

const filteredProducts = products.filter(product => product.tagId !== undefined || product.keywordId !== undefined)

是否有更好的方法来获得上述结果并获得包含tagId或keywordid的对象的过滤数组?

解决方法

您基本上是在手动创建对象原型中已经作为hasOwnProperty()存在的比较

const filteredProducts = 
     products.filter(product => product.hasOwnProperty('tagId') || product.product.hasOwnProperty('keywordId'))

//Or using `Array#some()`
const filteredProducts = 
     products.filter(product => ['tagId','keywordId']
                                  .some(prop => product.hasOwnProperty(prop)))
,

您可以在产品对象上使用hasOwnProperty。 像这样-

const filteredProducts = products.filter(product => product.hasOwnProperty("tagId") || product.hasOwnProperty('keywordId"))