【问题标题】:how to get last occurance of element m in array n如何获取数组 n 中元素 m 的最后一次出现
【发布时间】:2020-10-13 19:01:40
【问题描述】:

我刚开始编程,我只是想访问数组 n 中元素 m 的唯一最后一个位置。下面给出的代码提供了元素 m 的所有位置。

 var n = [];
        while (true) {
            let input = prompt("enter number to array");
            if (input == null || input == "c") {
                break;
            }
            n.push(Number(input));
            console.log(n);
        }
        var m = prompt("enter number to be match");
        console.log(m)
        for (var i = 0; i < n.length; i++) {
            if (n[i] == m) {
                console.log(i);
            } 

}

【问题讨论】:

    标签: javascript arrays algorithm loops if-statement


    【解决方案1】:

    您可以使用内置的Array.prototype.lastIndexOf() 函数来获取最后一个索引。

    .lastIndexOf() 方法返回可以在数组中找到给定元素的最后一个索引,如果不存在则返回 -1。该函数以相反的顺序搜索数组,即从数组的最后一个索引到第一个索引。

    n.lastIndexOf(m);
    

    var n = [];
    while (true) {
      let input = prompt("enter number to array");
      if (input == null || input == "c") {
        break;
      }
      
      n.push(Number(input));
    }
    
    var m = Number(prompt("enter number to be match"));
    console.log(n.lastIndexOf(m));

    【讨论】:

      【解决方案2】:

      您可以在相反方向上迭代数组——注意for 循环的新构造方式:

      var n = [];
      while (true) {
          let input = prompt("enter number to array");
          if (input == null || input == "c") {
              break;
          }
          n.push(Number(input));
          console.log(n);
      }
      var m = prompt("enter number to be match");
      console.log(m)
      for (var i = n.length - 1; i >= 0; i--) {
          if (n[i] == m) {
              console.log(i);
          } 
      }
      

      注意:

      虽然我的解决方案展示了如何更改您现有的方法以实现所需的结果,但请注意Yousaf's solution 是一个更简洁的实现;如果您想编写简洁的代码,那么我建议您利用这种方法。

      【讨论】:

      • 虽然我的解决方案展示了如何改变您现有的方法以达到预期的结果,但请注意@Yousaf 的解决方案是一个更简洁的实现;如果您想编写简洁的代码,那么我建议您利用这种方法。
      【解决方案3】:

      欢迎来到编程社区 :)

      其实很简单。您可以使用Array.prototype.lastIndexOf() 来检索元素最后出现的索引。

      我必须补充一点,您可能应该检查错误情况,例如,如果用户输入的不是整数。但为了简单起见,我将只粘贴您要查找的内容,而不进行错误检查

      let n = [];
      
      while (true) {
        const input = prompt('enter number to array');
        if (!input || input === 'c') {
          break;
        } else {
          n.push(Number(input));
          console.log(n);
        }
      }
      
      const m = Number(prompt('enter number to be match'));
      console.log(m);
      const lastIndexOfElement = n.lastIndexOf(m);
      if (lastIndexOfElement < 0) {
        console.log(`element ${m} could not be found`);
      } else {
        console.log(
          `the last occurence of ${m} can be found at position ${lastIndexOfElement}`
        );
      }
      

      【讨论】:

        【解决方案4】:

        您可以使用 n.indexOf(m) ( https://www.w3schools.com/jsref/jsref_indexof.asp ) 来获取索引 (i)。请注意,indexof 可以为负数,如果为负数则不在数组中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-06
          • 1970-01-01
          • 2019-04-29
          • 1970-01-01
          • 2015-11-04
          • 1970-01-01
          相关资源
          最近更新 更多