1

现在图书馆可以翻译这个操作

Select * from List where name = k% order by desc  

List.filter(function(x) { return x.first_char() == 'k' }).sort().reverse()); 

删除 () 的最佳方法是什么,以便开发人员可以编写如下语句:

List.filter(fn(x) { return x.first_char == 'k' }).sort.reverse;

天真的方法:

maxfn = function() {this[0]..};  Array.prototype.max = maxfn();

但是通过这种方法,我无法访问“this”。

我想为

new Array("1","2","3")

类似于:)(需要的建议)

_("1","2" ,"3")

就像我们在方案中一样 list -> '

我试图克隆参数但失败了。

谢谢。

4

4 回答 4

2

对于列表,您可以使用JSON表示法:

["1", "2", "3"]
于 2009-04-14T15:04:41.717 回答
1

如果您控制列表,则可以使用 RoBorg 建议的 JSON 表示法......但是,没有跨浏览器的方式将属性视为方法。注意:spidermonkey (firefox) 支持使用 getter(获取属性的方法)。

于 2009-04-14T15:52:19.403 回答
1

什么是删除 () 的最佳方法

JavaScript 中的属性获取器/设置器。不幸的是,它是一个相对较新的 JavaScript 功能,无法在 IE6/7(以及各种其他较旧的浏览器)上运行,因此它还没有真正准备好迎接黄金时段(尽管链接文章的介绍)。

您可以通过创建一个 JavaScript 对象来执行此特定示例,该对象包含一个字符串并隐藏所有字符串的方法,然后在初始化时将一个静态的“first_char”属性集添加到字符串的第一个字符。但这真的不值得。

新数组(“1”,“2”,“3”)

类似于:)(需要的建议)

_("1","2","3")

好吧,这很简单:

function _(/* items */) {
    var a= new Array();
    for (var i= 0; i<arguments.length; i++)
        a[i]= arguments[i];
    return a;
}

但是,现在这样做没有意义,因为数组文字语法:

['1', '2', '3']

从 JavaScript 1.1-1.2 时代开始就可以使用,并且可以在当今的每个浏览器中使用。(它比 JSON 早很多很多年。)

于 2009-04-14T16:04:35.583 回答
0

我将尝试一一回答:1)为什么要从函数调用中删除括号?2)如果“天真”方法失败,可能是因为您正在调用 maxFn 并将结果分配给 Array.prototype.max。它应该是这样的:

maxfn = function() {this[0]..};  Array.prototype.max = maxfn;

3) RoBorg 是正确的,只需使用文字符号来动态构造数组。


编辑:
这是在数组对象上实现 max 函数的一种方法。可选的 evaluator 参数是一个接受两个参数的函数,即当前最大值和数组中的当前值。它应该返回“更大”的对象。对非基元有用。

Array.prototype.max = function(evaluator) {
    var max, i = 1; len = this.length;
    if (len > 0) max = this[0];
    for (; i < len; i++) {
        if (evaluator) {
            max = evaluator(max, this[i]);
        }
        else if(max < this[i]) {
            max = this[i];
        }
    }
    return max;
};

var a = [1, 3, 4, 5, 6];
alert(a.max());
var b = ["Arnold", "Billy", "Caesar"];
alert(b.max());
var c = ["Arnold", new Date(), 99, true];
alert(c.max());
var d = [1, 3, 4, 5, 6];
alert(d.max(function (max, val) { return max < val ? val : max }));
于 2009-04-14T15:38:42.587 回答