我经历了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());