【问题标题】:Remove or Filter values out of an Array using for loop or a function使用 for 循环或函数从数组中删除或过滤值
【发布时间】:2020-06-04 15:23:34
【问题描述】:

我有一个数组,我想在每次出现时从我的数组中过滤或删除以下网址:

"https://basueUrl.com/Claim"
"https://basueUrl.com/ExplanationOfBenefit"

我的数组

Array= [  
        "https://basueUrl.com/Patient"
        "https://basueUrl.com/Organization"
        "https://basueUrl.com/Claim"
        "https://basueUrl.com/Practitioner"
        "https://basueUrl.com/Encounter"
        "https://basueUrl.com/Condition"
        "https://basueUrl.com/Claim"
        "https://basueUrl.com/ExplanationOfBenefit"
        "https://basueUrl.com/Claim"
        "https://basueUrl.com/ExplanationOfBenefit" 
        "https://basueUrl.com/ExplanationOfBenefit"
        ]

第一个解决方案我尝试了 for 循环但没有成功?

   for( var i = 0; i < Array.length; i++){ 
   if ( Array[i] === "https://basueUrl.com/ExplanationOfBenefit" & "https://basueUrl.com/Claim") {
    Array.splice(i, 1);
    i--;
   }
}
console.log(Array);

第二个解决方案我尝试了一个删除方法也不起作用。

function arrayRemove(Array, value) {

   return Array.filter(function(ele){
       return ele != value;
   });
}
var result = arrayRemove(Array,"https://basueUrl.com/ExplanationOfBenefit" & "https://basueUrl.com/Claim");

有什么建议吗?

【问题讨论】:

    标签: javascript arrays function for-loop


    【解决方案1】:

    第一种方法是在执行循环时修改数组,这会产生索引问题,因为当您调用 Array.prototype.splice 时,array.length 会发生变化。

    在第二种方法中,你没有通过你的想法

    console.log("https://basueUrl.com/ExplanationOfBenefit" & "https://basueUrl.com/Claim"); 
    // A number? probably you want an array.

    您可以使用函数filter和函数includes如下:

    let skip = ["https://basueUrl.com/Claim", "https://basueUrl.com/ExplanationOfBenefit"];
    let arr = ["https://basueUrl.com/Patient","https://basueUrl.com/Organization","https://basueUrl.com/Claim","https://basueUrl.com/Practitioner","https://basueUrl.com/Encounter","https://basueUrl.com/Condition","https://basueUrl.com/Claim","https://basueUrl.com/ExplanationOfBenefit","https://basueUrl.com/Claim","https://basueUrl.com/ExplanationOfBenefit","https://basueUrl.com/ExplanationOfBenefit"];
    let result = arr.filter(url => !skip.includes(url));
    
    console.log(result);

    【讨论】:

      【解决方案2】:
      Array.filter(x => x !== "https://basueUrl.com/Claim" && x !== "https://basueUrl.com/ExplanationOfBenefit")
      

      【讨论】:

      • 我知道你先回答了,但@ele 解决方案对我有用。谢谢
      【解决方案3】:

      var Array= [  
              "https://basueUrl.com/Patient",
              "https://basueUrl.com/Organization",
              "https://basueUrl.com/Claim",
              "https://basueUrl.com/Practitioner",
              "https://basueUrl.com/Encounter",
              "https://basueUrl.com/Condition",
              "https://basueUrl.com/Claim",
              "https://basueUrl.com/ExplanationOfBenefit",
              "https://basueUrl.com/Claim",
              "https://basueUrl.com/ExplanationOfBenefit", 
              "https://basueUrl.com/ExplanationOfBenefit"
              ];
              
      var filteredArray = Array.filter(item => item !== "https://basueUrl.com/Claim" && item !== "https://basueUrl.com/ExplanationOfBenefit")
      
      console.log(filteredArray)

      【讨论】:

        【解决方案4】:

        您可以运行下面的代码。希望这会有所帮助。

        // use this array instead on the original.  It creates a new array from the original 
        // array.
        const newFilteredArray = Array.filter(url => url !== 'https://basueUrl.com/Claim' && 
           url !== 'https://basueUrl.com/ExplanationOfBenefit');
        

        【讨论】:

          【解决方案5】:

          请看下面实现上述场景的方法。

          arr.filter(ele=>ele!=="https://basueUrl.com/Claim"
          && ele!=="https://basueUrl.com/ExplanationOfBenefit");
          

          【讨论】:

          • 我可以知道原因吗,为什么答案被否决?
          • Sardar Jee 你的方法没问题,人们更喜欢在答案框中输入答案而不是图片。
          • 我明白了。但是人们也可以指出这一点,而不是投反对票。谢谢你让我认识山姆,我会牢记在心。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-07
          • 1970-01-01
          • 1970-01-01
          • 2014-11-13
          • 1970-01-01
          相关资源
          最近更新 更多