我已经完成了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;
答案 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()
。
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;
这将是基本代码,您既可以直接使用数组,也可以作为局部变量传递给函数!