在 TypeScript 中如何从数组中移除特定元素

huangapple go评论62阅读模式
英文:

How to remove specific elements from array in typescript

问题

I want to use filter on my function, but I have a little problem.

So, I have this response, here I want to filter by "NAVE"

[
{
"codicePat": 93009428,
"dataInizioAttivita": "1992-03-01",
"dataCessazione": "0001-01-01",
"descrizioneTipoCertificato": "NAVE",
},
{
"codicePat": 93009429,
"dataInizioAttivita": "1992-07-01",
"dataCessazione": "0001-01-01",
"descrizioneTipoCertificato": "NAVE",
},
{
"codicePat": 93009430,
"dataInizioAttivita": "1997-04-03",
"dataCessazione": "0001-01-01",
"descrizioneTipoCertificato": "COMANDATA",
},
{
"codicePat": 93009431,
"dataInizioAttivita": "1992-09-01",
"dataCessazione": "1997-06-08",
"descrizioneTipoCertificato": "NAVE",
}
]

I'm using this function:

if (tipo === x.descrizioneTipoCertificato) {
const index = dataPan.content.findIndex(obj => {
return obj.descrizioneTipoCertificato === 'NAVE'
});
dataPan.content.splice(index, 1);
}

from this function I get only 2 first elements with NAVE certificato.
This is not correct, I want all data with this certificato, so 3 elements, not 2.

Have you any idea?

英文:

I want to use filter on my function, but I have a little problem.

So, I have this response, here I want to filter by "NAVE"

[
     {
         "codicePat": 93009428,
         "dataInizioAttivita": "1992-03-01",
         "dataCessazione": "0001-01-01",
         "descrizioneTipoCertificato": "NAVE",
     },
     {
         "codicePat": 93009429,
         "dataInizioAttivita": "1992-07-01",
         "dataCessazione": "0001-01-01",
         "descrizioneTipoCertificato": "NAVE",
     },
     {
         "codicePat": 93009430,
         "dataInizioAttivita": "1997-04-03",
         "dataCessazione": "0001-01-01",
         "descrizioneTipoCertificato": "COMANDATA",
 
     },
     {
         "codicePat": 93009431,
         "dataInizioAttivita": "1992-09-01",
         "dataCessazione": "1997-06-08",
         "descrizioneTipoCertificato": "NAVE",
     }
]

I'm using this function:

if(tipo === x.descrizioneTipoCertificato){
     const index = dataPan.content.findIndex(obj => {
           return obj.descrizioneTipoCertificato === 'NAVE'
     });
     dataPan.content.splice(index, 1);
}

from this function I get only 2 first elements with NAVE certificato.
This is not correct, I want all data with this certificato, so 3 elements, not 2.

Have you any idea?

答案1

得分: 1

Here is the translated JavaScript code:

const data = [
    {
        "codicePat": 93009428,
        "dataInizioAttivita": "1992-03-01",
        "dataCessazione": "0001-01-01",
        "descrizioneTipoCertificato": "NAVE",
    },
    {
        "codicePat": 93009429,
        "dataInizioAttivita": "1992-07-01",
        "dataCessazione": "0001-01-01",
        "descrizioneTipoCertificato": "NAVE",
    },
    {
        "codicePat": 93009430,
        "dataInizioAttivita": "1997-04-03",
        "dataCessazione": "0001-01-01",
        "descrizioneTipoCertificato": "COMANDATA",
    },
    {
        "codicePat": 93009431,
        "dataInizioAttivita": "1992-09-01",
        "dataCessazione": "1997-06-08",
        "descrizioneTipoCertificato": "NAVE",
    }    
]

const filtered = data.filter(item => item.descrizioneTipoCertificato === 'NAVE');

console.log(filtered);

Please note that I have only translated the JavaScript code, as you requested.

英文:

Use vanilla js here:

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

const data = [
    {
        &quot;codicePat&quot;: 93009428,
        &quot;dataInizioAttivita&quot;: &quot;1992-03-01&quot;,
        &quot;dataCessazione&quot;: &quot;0001-01-01&quot;,
        &quot;descrizioneTipoCertificato&quot;: &quot;NAVE&quot;,
    },
    {
        &quot;codicePat&quot;: 93009429,
        &quot;dataInizioAttivita&quot;: &quot;1992-07-01&quot;,
        &quot;dataCessazione&quot;: &quot;0001-01-01&quot;,
        &quot;descrizioneTipoCertificato&quot;: &quot;NAVE&quot;,
    },
    {
        &quot;codicePat&quot;: 93009430,
        &quot;dataInizioAttivita&quot;: &quot;1997-04-03&quot;,
        &quot;dataCessazione&quot;: &quot;0001-01-01&quot;,
        &quot;descrizioneTipoCertificato&quot;: &quot;COMANDATA&quot;,
    },
    {
        &quot;codicePat&quot;: 93009431,
        &quot;dataInizioAttivita&quot;: &quot;1992-09-01&quot;,
        &quot;dataCessazione&quot;: &quot;1997-06-08&quot;,
        &quot;descrizioneTipoCertificato&quot;: &quot;NAVE&quot;,
    }    
]

const filtered = data.filter(item =&gt; item.descrizioneTipoCertificato === &#39;NAVE&#39;);

console.log(filtered);

<!-- end snippet -->

答案2

得分: 0

使用 filter 函数对数组进行操作:

const newArr = oldArr.filter(item => item.descrizioneTipoCertificato === 'NAVE')

这将简单地过滤并返回一个新数组,其中仅包含满足条件的元素。

英文:

simply use filter on the array

 const newArr = oldArr.filter(item =&gt; item.descrizioneTipoCertificato == &#39;NAVE&#39;)

this will simply filter and return to a new array only the element that matches the condition

huangapple
  • 本文由 发表于 2023年5月22日 21:42:28
  • 转载请务必保留本文链接:https://go.coder-hub.com/76306816.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定