繁体   English   中英

我有一个对象数组。 我需要删除没有特定属性的行

[英]I have an array of objects. I need to remove the row which doesn't have a particular property


const data=[{"NAME":"ABC","ID":"1","CATALOG":"PDC"},{"NAME":"DOT","ID":"88","CATALOG":"PDC"},{"NAME":"TIM","ID":"99","CATALOG":"PDC"},{"NAME":"TOM","ID":"19","CATALOG":"PDC"},{"NAME":"CAT","ID":"18"},{"NAME":"BAT","ID":"13"},{"NAME":"XYZ","ID":"12"},{"NAME":"PQR","ID":"11"}]
for(var i=0;i<data.length;i++)
{
    if (data[i].hasOwnProperty('CATALOG')) 
    {
    console.log(data[i].ID)
    }
    else
    {
        
        data.splice(i,1)
        //delete(data[i])
    }
}
console.log(data)

以上是我的代码,但结果不是预期的。 使用 splice 和使用 delete() 创建 undefined 代替没有属性 CATALOG 的对象时,将保留最后 2 行。

干得好

Array.filter() 文档https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

Object.keys() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

Array.some() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some

 const data=[{"NAME":"ABC","ID":"1","CATALOG":"PDC"},{"NAME":"DOT","ID":"88","CATALOG":"PDC"},{"NAME":"TIM","ID":"99","CATALOG":"PDC"},{"NAME":"TOM","ID":"19","CATALOG":"PDC"},{"NAME":"CAT","ID":"18"},{"NAME":"BAT","ID":"13"},{"NAME":"XYZ","ID":"12"},{"NAME":"PQR","ID":"11"}] const newArray = data.filter(item => Object.keys(item).some(key => key === 'CATALOG')) console.log(newArray)

您可以使用Array.filter方法。 它创建一个数组,其中只有在回调函数中返回 true 的条目。

 const data=[{"NAME":"ABC","ID":"1","CATALOG":"PDC"},{"NAME":"DOT","ID":"88","CATALOG":"PDC"},{"NAME":"TIM","ID":"99","CATALOG":"PDC"},{"NAME":"TOM","ID":"19","CATALOG":"PDC"},{"NAME":"CAT","ID":"18"},{"NAME":"BAT","ID":"13"},{"NAME":"XYZ","ID":"12"},{"NAME":"PQR","ID":"11"}] const dataFiltered = data.filter((object)=> object.hasOwnProperty('CATALOG')) console.log(dataFiltered)

暂无
暂无

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

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