使用.push()向数组中添加多个项,但只添加一个-JavaScript

使用.push()向数组中添加多个项,但只添加一个-JavaScript,javascript,arrays,Javascript,Arrays,我是JavaScript新手,通过基于互联网的免费资源100%自学。(只是一个介绍,以防我的问题是一个愚蠢的错误) 问题是: 给定一个字符串数组,返回另一个包含其所有最长字符串的数组 范例 对于inputArray=[“aba”、“aa”、“ad”、“vcd”、“aba”],输出应为 所有最长字符串(输入阵列)=[“aba”、“vcd”、“aba”] 我的代码: function allLongestStrings(inputArray) { var longest = inputArr

我是JavaScript新手,通过基于互联网的免费资源100%自学。(只是一个介绍,以防我的问题是一个愚蠢的错误)

问题是:

给定一个字符串数组,返回另一个包含其所有最长字符串的数组

范例

对于inputArray=[“aba”、“aa”、“ad”、“vcd”、“aba”],输出应为 所有最长字符串(输入阵列)=[“aba”、“vcd”、“aba”]

我的代码:

function allLongestStrings(inputArray) {
    var longest = inputArray.reduce(function (a, b) { 
        return a.length > b.length ? a : b; 
    });
    for(var i = 0; i < inputArray.length; i++) {
        if(inputArray[i].length === longest.length) {
            var longArray = [];
            longArray.push(inputArray[i]);
        }
        return longArray;
    }
}
函数AllLongestString(inputArray){
var longest=inputArray.reduce(函数(a,b){
返回a.length>b.length?a:b;
});
for(变量i=0;i
错误:

输入:
输入方式:[“aba”, “aa”, “广告”, “vcd”, “aba”]

输出: [“aba”]

预期输出: [“aba”, “vcd”, “aba”]

输入: 输入方式:[“abc”, “eeee”, “abcd”, “dcd”]

输出: 空的

预期输出: [“eeee”,
“abcd”]

进行评论中所述的更改会给我带来:

function allLongestStrings(inputArray) {
    var longest = inputArray.reduce(function (a, b) { 
        return a.length > b.length ? a : b; 
    });
    var longArray = []; 
    for (var i = 0; i < inputArray.length; i++) {
        if (inputArray[i].length === longest.length) {
            longArray.push(inputArray[i]);
        }
    }
    return longArray;
}
我得到了您列出的这两种情况的预期输出:

allLongestStrings(inp1)
(3) ["aba", "vcd", "aba"]
allLongestStrings(inp2)
(2) ["eeee", "abcd"]

longArray
应在循环外声明,否则每iteration@AndrewLi谢谢我将它移动到循环中,仍然只有一个输出。尽管如此,第二个错误确实更改为:输入:inputArray:[“abc”、“eeee”、“abcd”、“dcd”]输出:[“eeee”]预期输出:[“eeee”、“abcd”]您还将在for循环体内部返回。它应该移动到函数声明的底部。摘要:declare
var longArray=[]在for语句的
之前,以及在for循环的右大括号
}
之后的
返回longArray
。@StephenP-hmm,我试过了,第一个错误保持不变,但第二个错误现在显示:输入:输入阵列:[“abc”,“eeee”,“abcd”,“dcd”]输出:[]预期输出:[“eeee”,“abcd”]啊!很抱歉,我错误地将其向下移动了一个支架,而不是两个。我复制了你的代码,然后把它贴在我的代码下面进行比较,结果就是这样。顺便说一句,它成功了!非常感谢你的帮助!!!
allLongestStrings(inp1)
(3) ["aba", "vcd", "aba"]
allLongestStrings(inp2)
(2) ["eeee", "abcd"]