3

有没有更优雅的方法来编写这种函数而不必初始化数组:

function getStuff () {
    var some_array= [];

    $("#some-id ul li span.key").each(function() {
          some_array.push($(this).text());
    });

    return some_array;
}
4

2 回答 2

9

jQuery.map

function getStuff () {
    return $.map($("#some-id ul li span.key"), function(el) {
          return $(el).text();
    });
}

小提琴

性能方面,差异很小。此外,正如 Lix 所说,选择您认为更具可读性和可维护性的方法。最后,两者最终都会创建一个数组,迭代元素,将字符串值推送到数组并返回数组。

于 2012-12-11T17:19:59.833 回答
5

另一种更实用的感觉方式可能是:

定义一个“方法”函数:

var method = function (method) {
    return function (item) {
        return $(item)[method]();
    };
};

你可以像这样使用它:

var text = method('text');
var html = method('html');
var fadeIn = method('fadeIn');

要重新工作您的getStuff功能:

var getText = function (arr) {
    return $.map(arr, text);
};

$.map遍历传入的数组,应用从 返回的函数var text = method('text'),这只是$(array item).method().

I just threw this together to demonstrate a way you can use these kinds of techniques. You would probably name things differently and define the "method" function as a custom library/helper that is meant to be used app-wide.

于 2012-12-11T17:39:58.247 回答