forEach循环将元素从数组中拉出并推入新数组

时间:2018-08-25 14:42:18

标签: javascript loops foreach push

我正在尝试让我的forEach循环遍历var水果并将发现的所有字符串推入arr2。

这是我的代码:

var fruit = [1,2,3, "apple", "banana", "grape"] 

function isString(fruit) {
var arr2 = []
fruit.forEach(function(element) {
if(element == "string"){
arr2.push(element)
}
return arr2
})

}

//期望的输出是arr2 =“ apple”,“ banana”,“ grape”

我不确定我在做什么错。感谢您的任何建议。

5 个答案:

答案 0 :(得分:1)

有效的Javascript代码:

"Russian_Russia.1251"

答案 1 :(得分:0)

替换:

  element == "string"

使用:

  typeof element == "string"

因为您基本上是在比较实际数据而不是类型。

答案 2 :(得分:0)

两个问题:

  1. 您正在将返回值放入循环中。因此,return甚至在循环完成之前。这意味着第一个不是字符串的元素,它返回并得到一个空数组。

  2. element == "string"不是检查类型的正确方法。您可以使用typeof element === "string"

还有第三个可能的问题,那就是您实际上必须调用该函数。查找以下工作代码:

var fruit = [1, 2, 3, "apple", "banana", "grape"]

function isString(fruit) {
    var arr2 = []
    fruit.forEach(function(element) {
        if (typeof element === "string") {
            arr2.push(element)
        }

    })
    return arr2;

}

isString(fruit);

答案 3 :(得分:0)

我在我的代码之一中使用了此foreach序列...可能会帮助您。

string []正文;

string first = Body.First(); //获取“ Body”数组的第一个索引的内容

    if (first != "")                // if first index of "Body" array contain data's
    {
      string  Content = "";

        foreach (string line in Content)        // do something
        {
            Content = Content + line + "\n";
        }
    }

答案 4 :(得分:0)

您应该使用typeof并在函数arr2的末尾返回isString

var fruit = [1,2,3, "apple", "banana", "grape"] 

function isString(fruit) {
  var arr2 = [];
  fruit.forEach(function(element) {
    if(typeof element === "string"){
      arr2.push(element);
    }
  })
  
  return arr2;
}

console.log(isString(fruit))

通过您可以使用filter函数使其更短的方式

var fruit = [1,2,3, "apple", "banana", "grape"];

var fruitString = fruit.filter(function(element) {
   return typeof element === "string";
});

console.log(fruitString);