如何从for循环返回数组输出并逐一检查

时间:2019-04-09 22:42:51

标签: javascript arrays

我想从数组中获取结果并逐一检查

//////////////////////////////////////////////
//////////// this code not works,  ////////////
////////////   but not flexible   ////////////
//////////////////////////////////////////////

var myA = ["said", "imad", "hassan", "bilal", "mohamed"];
var doc = document.getElementById('div1');
var inp = document.getElementById('input1');

function click1() {
    'use strict';

    var i = inp.value;

    if (i <= 0) {
    doc.innerHTML = 'Please type name';

    } else if (i === myA[0] || i === myA[1] ||
           i === myA[2] || i === myA[3] || i === myA[4]) {
    doc.innerHTML = i;

    } else {
    doc.innerHTML = 'Please type in a correct name';
    }
}


/////////////////////////////////////////////////////
//////////// my try to make it flexible, ////////////
//////////// but i get just a last index ////////////
/////////////////////////////////////////////////////


var myA = ["said", "imad", "hassan", "bilal", "mohamed"];
var index = myA[0];
// console.log(index);
var doc = document.getElementById('div1');
var inp = document.getElementById('input1');

function getId(a){
  var aL = a.length, index = a[0], x=0;

  for(x = 0; x < aL; x++ ){
  index = a[x];
  // console.log(index);
  }    
  return index;
}  
// console.log(getId(myA));

function click1() {
  'use strict';

  var i = inp.value;

  if (i <= 0) {
  doc.innerHTML = 'Please type name';

  } else if (i === getId(myA)) {
  doc.innerHTML = i;

  } else {
  doc.innerHTML = 'Please type in a correct name';
  }
}

2 个答案:

答案 0 :(得分:0)

您的 getId()函数完全错误。它的设计方式是遍历 myA 数组,并始终返回最后一个元素: mohamed 。 您需要为该函数提供一个值进行比较,在数组上循环,以防万一找到匹配项,则返回布尔值true。如果没有,则返回false。

function getId(val){
  for(var a=0;a<myA.length;a++)
  {
    if(myA[a]==val)
    {
      return true;
    }
  }
  return false;
}

现在您可以简单地通过

进行调用
if (getId(i)) {
      doc.innerHTML = i;

  } else {
      doc.innerHTML = 'Please type in a correct name';
  }

答案 1 :(得分:0)

如何检查值是否在数组中:

新样式(ES6):

if (myA.includes(inp.value)) {
  // name found in array
}

较旧的样式:

if (myA.indexOf(inp.value) > -1) {
  // name found in array
}