Javascript 如何按年龄对数组排序

Javascript 如何按年龄对数组排序,javascript,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; } con

我已经检查了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.
我尝试了其他几种简单的方法对数组进行排序,但都没有效果。谢谢你的帮助!仅Javascript

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

我的目标是这样做,以便找到18岁以下元素的索引位置,从名称数组中提取与页面上的年龄数组对应的相同元素,并在页面上发布:

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

我认为您需要使用
filter()
而不是
sort()

var-arr=[4,21,47,16,18];
18岁以下的函数(数组){
返回数组.filter(函数(x){returnx<18;});
}
控制台日志(低于18(arr))
。作为控制台{
身高:100%;
}
.作为控制台包装{
最大高度:100%!重要;
排名:0;

}
我认为您需要使用
filter()
而不是
sort()

var-arr=[4,21,47,16,18];
18岁以下的函数(数组){
返回数组.filter(函数(x){returnx<18;});
}
控制台日志(低于18(arr))
。作为控制台{
身高:100%;
}
.作为控制台包装{
最大高度:100%!重要;
排名:0;
}
基于

有了这个,我得到了控制台的答案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;
   }, []);
}
十八岁以下的函数(){
return myArray.reduce(函数(a,e,i){//return缺失,函数语法不正确
如果(e<18)
{
a、 推(i);
}
返回a;
}, []);
}
演示

var myArray=[4,21,47,16,18];
十八岁以下的函数(){
返回myArray.reduce(函数(a,e,i){
如果(e<18){
a、 推(i);
}
返回a;
}, []);
}
console.log(十八岁以下)()基于

有了这个,我得到了控制台的答案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;
   }, []);
}
十八岁以下的函数(){
return myArray.reduce(函数(a,e,i){//return缺失,函数语法不正确
如果(e<18)
{
a、 推(i);
}
返回a;
}, []);
}
演示

var myArray=[4,21,47,16,18];
十八岁以下的函数(){
返回myArray.reduce(函数(a,e,i){
如果(e<18){
a、 推(i);
}
返回a;
}, []);
}

console.log(十八岁以下)()
您可以使用
reduce
方法并返回结果

十八岁以下函数(数组){
返回数组.reduce(函数(a,e,i){
如果(e<18){
a、 推(i);
}
返回a;
}, []);
}
变量年龄=[4,21,47,16,18];

控制台日志(十八岁以下(年龄))
您可以使用
reduce
方法并返回结果

十八岁以下函数(数组){
返回数组.reduce(函数(a,e,i){
如果(e<18){
a、 推(i);
}
返回a;
}, []);
}
变量年龄=[4,21,47,16,18];

控制台日志(十八岁以下(年龄))请同时添加想要的结果。您能给我们一个输入和预期输出的示例,以便我们准确地了解您想要什么吗?-可能的重复请添加想要的结果。您能给我们一个输入和预期输出的示例,以便我们准确地了解您想要什么吗?-重复@qinqa的可能重复项这对您有帮助吗?您好,通过这一项,我得到了确切的年龄(answer console.log是[4,16],我在其中查找“数组中的位置”[0,3]。gurvinder372示例适用于该原因。(现在我正试图从名称数组中获取0,3的值,该数组仍然包含5个名称,类似于myArrayName.slice(under18)->var under18=under18;)谢谢你的帮助!@没问题,如果你的问题解决了,请关闭答案!等我知道怎么办就行了!:D@qinqa这对您有帮助吗?您好,通过这一个,我从字面上得到了年龄(answer console.log是[4,16],我在这里查找“数组中的位置”[0,3])。gurvinder372示例适用于这一原因。(现在我正在尝试从名称数组中获取0,3的值,该数组仍然包含5个名称,类似于myArrayName.slice(18岁以下)->var under18=18岁以下;)谢谢您的帮助!@没问题,如果您的问题得到解决,请关闭答案!我找到解决方法后就可以了!:D
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;
   }, []);
}