我经历了stackoverflow问题,并找到了与我所遇到的问题相似/接近的答案,但似乎我缺乏理解。

我有一个由年龄(4、21、47、16、18等)组成的数组。我正在尝试对数组进行排序,以便找到低于18的每个索引位置。为此,我编写了一个for循环,但它会在年龄超过18岁时终止。

var text = "";

for (var i = 0; i <= myArray.length && myArray[i] < 18; i++) {
text += i;
}
console.log(text);
text = ""; // with this I get answer 0 to console, where as i would want
0 3.


我也尝试了以下方法,但是这些方法只会给我18以下的第一个值(或者通常不起作用)。我刚刚开始编码,所以我也不了解这些方式,因此,如果可能的话,我宁愿使用for循环进行编码:

1)

function underEighteen() {
myArray.reduce(function a, e, i) {
if (e < 18)
a.push(i);
return a;
}, []);
}


2)

function isUnderEighteen(elementBelow18) {
return elementBelow18;
}
function sortAge() {
var under18 = myArray.find(isUnderEighteen);
}


我尝试了其他几种简单的方法来对数组进行排序都无济于事。帮助赞赏!仅JavaScript ...

编辑:所以我有一个带有文本框的普通网页,您可以在其中插入age&name并保存它们。然后,我将向所有人展示禁止购买酒精饮料的人和那些(不满18岁的)酒精饮料的人。

我的目的是这样做,以便找到18以下的那些元素的索引位置,从名称数组中拉出与age数组的元素相对应的相同元素,然后将它们发布到页面上:

document.getElementbyId("notAllowetoDrink").innerHTML = "Do not sell
alcohol + "XXXXXXX;

最佳答案

基于


  有了这个我得到答案0到控制台,在那里我想要0 3。





  我也尝试过跟随,但是这些只会给我第一个
  小于18的值(或通常不起作用)。


您很亲密,小问题已在注释中突出显示

function underEighteen() {
   return myArray.reduce(function (a, e, i) { //return was missing and function syntax was incorrect
      if (e < 18)
      {
         a.push(i);
      }
      return a;
   }, []);
}


演示版



var myArray = [4, 21, 47, 16, 18];

function underEighteen() {
  return myArray.reduce(function(a, e, i) {
    if (e < 18) {
      a.push(i);
    }
    return a;
  }, []);
}

console.log(underEighteen());

10-05 21:08
查看更多