【问题标题】:$.each function to add return to an external variable$.each 函数添加返回到外部变量
【发布时间】:2014-04-29 13:53:57
【问题描述】:

我有一个字符串数组,我用这个函数处理它:

$.each(lines, processLine);

processLine 函数返回另一个字符串,但我需要将这些字符串组合成一个结果。主要问题是我不希望 processLine 函数引用外部变量(名为 css),它只需要返回结果,并在外部进行组合。所以这就是我所做的:

var css = '';
css += $.each(lines, processLine);

但是 css 变量以原始 Arrays 元素的组合结束(未处理),不知道为什么...

【问题讨论】:

  • $.map 最终可能是一个更好的选择
  • 最简单的方法是删除css += 并将其放在processLine的末尾。
  • 好吧,.each 什么也不返回。我们可以看看processLine是什么吗?
  • $.map(lines, processLine); var 结果 = lines.join(',');
  • 内部回调(processLine)你必须做的附加..

标签: javascript jquery arrays each


【解决方案1】:

$.each()迭代,$.map()项目。由于您想投影行中的值,您应该使用$.map():

var css = $.map(lines, processLine).join("");

传递给$.map() 的函数会为数组中的每个项目调用,并带有两个参数:项目本身及其索引。由于processLine() 将一行作为其第一个也是唯一的参数,因此我们可以直接传递该函数,而不是使用匿名函数作为中间函数。

从那里,join() 将从我们的投影数组构建一个字符串。将空字符串作为分隔符传递会导致简单的连接。

编辑:如果 processLine() 不接受单个 line 参数,那么我上面的推理是不正确的,你必须写如下:

var css = $.map(lines, function(line, index) {
    return processLine(index, line);
}).join("");

【讨论】:

  • 抱歉沟通不畅,processLine 需要索引和行变量,我认为你的答案是正确的,但请给我一个旧的例子吗?
【解决方案2】:

你可以实现这样的功能:

function processLines(lines) {
  var resultCss = '';
  $.each (lines, function() { resultCss += processLine(this) });
  return resultCss;
}

var css = processLines(yourLines);

【讨论】:

    猜你喜欢
    • 2016-04-21
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2017-01-18
    • 2019-02-05
    • 2023-03-20
    相关资源
    最近更新 更多