如何根据年龄排序数组

时间:2017-11-30 12:18:39

标签: javascript

我已经完成了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 ...

编辑:所以我有一个带有文本框的普通网页,您可以在其中插入年龄和名称并保存它们。然后我有可能向所有不允许购买酒精的人和那些(18岁以下和以上)的人展示。

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

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

3 个答案:

答案 0 :(得分:1)

基于

  

有了这个,我得到了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());

答案 1 :(得分:1)

您可以使用reduce方法并返回结果。

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

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

console.log(underEighteen(ages));

答案 2 :(得分:0)

我认为您需要使用filter()代替sort()

&#13;
&#13;
var arr = [4, 21, 47, 16, 18];

function under18(array){
  return array.filter(function(x){return x < 18;});
}
console.log(under18(arr));
&#13;
.as-console {
    height: 100%;
}
.as-console-wrapper {
  max-height: 100% !important;
  top: 0;
}
&#13;
&#13;
&#13;

这将是基本代码,您既可以直接使用数组,也可以作为局部变量传递给函数!