var result = string.split('')。forEach(...);在JavaScript中不起作用

时间:2016-01-22 23:19:48

标签: javascript

在Javascript中,为什么结果低于undefined

var x = "happy";
var result = x.split('').forEach(function(val,index,array){
   array[index] = "0";
}); 
console.log(result); 

输出结果为:

undefined

4 个答案:

答案 0 :(得分:1)

因为forEach正在编辑数组。它不返回数组。您的代码适用于此修改:

var x = "happy";
var result = x.split('');
result.forEach(function(val,index,array){
   array[index] = "0";
}); 
console.log(result); 
  

forEach()为每个数组元素执行一次回调函数;   与map()或reduce()不同,它总是返回undefined值而且是   不可链接。典型的用例是执行副作用   链的末端。 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description

答案 1 :(得分:1)

string.split('').forEach(...)可以完美地迭代字符串的字符。

但是forEach不返回值,因此result === undefined

答案 2 :(得分:1)

如上所述,每次都不会返回值。

您可以使用map()

var x = "happy";
var result = x.split('').map(function(val,index,array){
   return "0";
}); 
console.log(result); 

答案 3 :(得分:0)

这是因为forEach遍历数组。它没有返回任何东西。

试试这个:

var x = "happy";
var result = [];
x.split('').forEach(function(val,index,array){
  result.push("0");
});

console.log(result);

使用下划线你可以用两行来写它:

var x = "happy";
var result = _.map(x.split(''), function(el){ return "0"; });