簡體   English   中英

如何通過 map 過濾 object 陣列?

[英]How to filter by map an object array?

我的問題是我想過濾以僅顯示具有當前 kw 的產品。 我的代碼在只針對一個客戶時運行良好,但知道我們想要比較許多公司的產品並且必須改變一些東西。 我的想法是為所有客戶端創建一個數組,並使用 map 方法遍歷它們。

  {  ofertapompy.filter(person => {
          var  correctSize =  Math.ceil((`${calkowitezapotrzebowanie}`/1000));

           var i; 
    for(var i = 0; i <= person.pompy.length; i++ )
    {   
       if(correctSize >= 2 && correctSize <= 4.5) {return "3kw" in person.pompy[i].cena  || 
    "1kw" in person.pompy[i].cena || 
    "2kw" in person.pompy[i].cena}
    if(correctSize === 4 ) {return "4kw" in person.pompy[i].cena  || 
    "2kw" in person.pompy[i].cena || 
    "3kw" in person.pompy[i].cena} 
    if(correctSize === 5 ) {return "5kw" in person.pompy[i].cena  || 
    "4kw" in person.pompy[i].cena || 
    "3kw" in person.pompy[i].cena} 
    if(correctSize === 6 ) {return "6kw" in person.pompy[i].cena  || 
    "5kw" in person.pompy[i].cena || 
    "4kw" in person.pompy[i].cena} 
    if(correctSize === 7) {return "7kw" in person.pompy[i].cena  || 
    "6kw" in person.pompy[i].cena || 
    "5kw" in person.pompy[i].cena} 
    if(correctSize === 8) {return "8kw" in person.pompy[i].cena  || 
    "7kw" in person.pompy[i].cena || 
    "6kw" in person.pompy[i].cena} 
    if(correctSize === 9) {return "9kw" in person.pompy[i].cena  || 
    "8kw" in person.pompy[i].cena || 
    "7kw" in person.pompy[i].cena} 
    if(correctSize === 10) {return "10kw" in person.pompy[i].cena  || 
    "9kw" in person.pompy[i].cena || 
    "8kw" in person.pompy[i].cena} 
    if(correctSize === 11) {return "11kw" in person.pompy[i].cena  || 
    "10kw" in person.pompy[i].cena || 
    "9kw" in person.pompy[i].cena} 
    if(correctSize === 12) {return "12kw" in person.pompy[i].cena  || 
    "11kw" in person.pompy[i].cena || 
    "10kw" in person.pompy[i].cena} 
    if(correctSize === 13) {return "13kw" in person.pompy[i].cena  || 
    "12kw" in person.pompy[i].cena || 
    "11kw" in person.pompy[i].cena} 
    if(correctSize === 14) {return "14kw" in person.pompy[i].cena  || 
    "12kw" in person.pompy[i].cena || 
    "13kw" in person.pompy[i].cena} 
    if(correctSize === 15) {return "15kw" in person.pompy[i].cena  || 
    "14kw" in person.pompy[i].cena || 
    "13kw" in person.pompy[i].cena} 
    if(correctSize === 16) {return "16kw" in person.pompy[i].cena  || 
    "15kw" in person.pompy[i].cena || 
    "14kw" in person.pompy[i].cena} 
    if(correctSize === 17) {return "17kw" in person.pompy[i].cena  || 
    "16kw" in person.pompy[i].cena || 
    "15kw" in person.pompy[i].cena} 
    if(correctSize === 18) {return "18kw" in person.pompy[i].cena  || 
    "17kw" in person.pompy[i].cena || 
    "16kw" in person.pompy[i].cena} 
    if(correctSize === 19) {return "18kw" in person.pompy[i].cena  || 
    "17kw" in person.pompy[i].cena || 
    "19kw" in person.pompy[i].cena} 
    if(correctSize === 20) {return "20kw" in person.pompy[i].cena  || 
    "19kw" in person.pompy[i].cena || 
    "18kw" in person.pompy[i].cena} 
    if(correctSize === 21) {return "21kw" in person.pompy[i].cena  || 
    "20kw" in person.pompy[i].cena || 
    "19kw" in person.pompy[i].cena} 
    if(correctSize === 22) {return "22kw" in person.pompy[i].cena  || 
    "21kw" in person.pompy[i].cena || 
    "20kw" in person.pompy[i].cena} 
    if(correctSize === 23) {return "23kw" in person.pompy[i].cena  || 
    "22kw" in person.pompy[i].cena || 
    "21kw" in person.pompy[i].cena} 
    if(correctSize === 24) {return "24kw" in person.pompy[i].cena   || 
    "22kw" in person.pompy[i].cena || 
    "23kw" in person.pompy[i].cena} 
    if(correctSize => 25) {return "25kw" in person.pompy[i].cena || 
    "24kw" in person.pompy[i].cena || 
    "23kw" in person.pompy[i].cena  } 
    
   }}   ).map((filteredPerson, index) => {
   var dupa = index +1
   return(<>
   <tr style={{width: "100%", backgroundColor: "#ae4a84"}}>{filteredPerson.nazwa_firmy}</tr>
   <tr>this is {dupa}</tr>
   <tr> <td>
     { filteredPerson.pompy.forEach(name => {
  var dupa = name.find(name=> name.cena.key === "5kw" )
      return dupa}) }
     </td>
     <td>{ filteredPerson.pompy[0].gwarancja}</td>
     <Table  className={style.effectivetable} style={{boarderColor: "transparent"}} responsive  striped  hover ><thead><tr></tr></thead><tbody>
  {  Object.entries(filteredPerson.pompy[0].cena).filter((
    [key])=> {
     var  correctSize =  Math.ceil((`${calkowitezapotrzebowanie}`/1000));
  
     if(correctSize === 3 ) {return  key == "3kw" || key == "2kw" || key == "1kw"}
     if(correctSize === 4 ) {return  key == "4kw"|| key == "2kw" || key == "3kw"} 
     if(correctSize === 5 ) {return  key == "5kw" || key == "3kw" || key == "4kw"} 
     if(correctSize === 6 ) {return  key == "6kw" || key == "4kw" || key == "5kw"} 
     if(correctSize === 7) {return  key == "7kw" || key == "6kw" || key == "5kw"} 
     if(correctSize === 8) {return  key == "8kw" || key == "6kw" || key == "7kw"} 
     if(correctSize === 9) {return  key == "9kw" || key == "8kw" || key == "7kw"} 
     if(correctSize === 10) {return  key == "10kw" || key == "8kw" || key == "9kw"} 
     if(correctSize === 11) {return  key == "11kw" || key == "10kw" || key == "9kw"} 
     if(correctSize === 12) {return  key == "12kw" || key == "10kw" || key == "11kw"} 
     if(correctSize === 13) {return  key == "13kw" || key == "12kw" || key == "11kw"} 
     if(correctSize === 14) {return  key == "14kw" || key == "12kw" || key == "13kw"} 
     if(correctSize === 15) {return  key == "15kw" || key == "14kw" || key == "13kw"} 
     if(correctSize === 16) {return  key == "16kw" || key == "14kw" || key == "15kw"} 
     if(correctSize === 17) {return  key == "17kw" || key == "16kw" || key == "15kw"} 
     if(correctSize === 18) {return  key == "18kw" || key == "17kw" || key == "16kw"} 
     if(correctSize === 19) {return  key == "18kw" || key == "18kw" || key == "17kw"} 
     if(correctSize === 20) {return  key == "20kw" || key == "18kw" || key == "19kw"} 
     if(correctSize === 21) {return  key == "21kw" || key == "20kw" || key == "19kw"} 
     if(correctSize === 22) {return  key == "22kw" || key == "20kw" || key == "21kw"} 
     if(correctSize === 23) {return  key == "23kw" || key == "22kw" || key == "21kw"} 
     if(correctSize === 24) {return  key == "24kw" || key == "22kw" || key == "23kw"} 
     if(correctSize => 25 ) {return   key == "25kw" || key == "24kw" || key == "23kw"} 
 
    }
    
 
    ).map(([key,value],index) => {
   return(  <><tr><td> {key}</td><td> {(value*1.1).toFixed(1)}zł netto</td>
   <td>{ (cenaPoDotacjiIuldze(((value*1.1)), wysokoscDotacji, stawkaPodatkuDochodowego)).toFixed(1)}</td>
 
    </tr></>)
   })
 }

當它被硬編碼時, filteredPerson.pompy[0].cena顯示結果,而不是我循環遍歷所有 arrays 的數字。

const ofertapompy = [
  {id: 0,
    nazwa_firmy: "Company One", 
    pompy: [
  {id: 0,
    name: "zero",
    description: "",
    cena: {
      "9kw": 34064,
      "12kw": 35386,
      "15kw": 37434,
      "18kw": 38492,
      "22kw": 38934,
    },
  },
  
  {id: 1,
    name: "one",
    description: "",
    cena: {
      "9kw": 11,
      "12kw": 22,
      "15kw": 33,
      "18kw": 44,
      "22kw": 55,
      "25kw": 66,
      "30kw": 77,
    },
  }},
{id: 0,
    nazwa_firmy: "Company One", 
    pompy: [
  {id: 0,
    name: "zero",
    description: "",
    cena: {
      "9kw": 34064,
      "12kw": 35386,
      "15kw": 37434,
      "18kw": 38492,
      "22kw": 38934,
    },
  },
  
  {id: 1,
    name: "one",
    description: "",
    cena: {
      "9kw": 11,
      "12kw": 22,
      "15kw": 33,
      "18kw": 44,
      "22kw": 55,
      "25kw": 66,
      "30kw": 77,
    },
  }}]

我們需要 3 個循環:for people、for pompy 和 for cena。 在每個級別,我們使用相同的 function checkKw(correctSize, kw)進行過濾。 這是一個例子

最好優化checkKw function 因為它會被調用很多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM