我有一些数据我想使用Array.prototype.map进行转换.但是在map函数中,外部函数调用可能会抛出错误.我想捕获此错误,而不是将该特定对象添加到返回的数组.目前我只是返回undefined然后使用Array.prototype.filter清除未定义的值,但这似乎是一种肮脏的方式.
为了澄清,我正在寻找这个功能:
['apple','pear','banana','peach'].map(function(fruit){ if (fruit === 'apple') { return undefined; } return 'I love to eat ' + fruit; }); // ['I love to eat pear','I love to eat peach','I love to eat banana']
解决方法
如果你不想使用简单的for循环,那么代替map尝试使用reduce这种方式:
var result = ['apple','peach'].reduce(function(prev,curr){ if (curr === 'apple') { return prev; } prev.push(curr); return prev; },[]); alert(result);
所以我的想法是,在“异常”的情况下,你只需返回prev数组而不修改它.