gpt4 book ai didi

javascript - Linq.js 作用域

转载 作者:行者123 更新时间:2023-11-30 17:44:06 26 4
gpt4 key购买 nike

我遇到了以下情况。我有一个 select 语句,它使用当前作用域 me 中的一个函数。如何将 me 放入 select 函数中?

var me = this;
var results = Enumerable
.from(jsonData)
.select('x,i=>{abbr:me.transform(x), name:x}')
.toArray(); //me.transform(x) will hit error

“我”是一个动态生成对象的实例,me.transform(x) 也使用“我”中的其他依赖项来工作。这意味着我无法使“me.transform()”成为全局函数。


编辑

var me = this;
var results = Enumerable
.from(jsonData)
.select(function(x,i){
return {abbr:me.transform(x), name:x};
}).toArray();

实际上,这个修改会起作用,但是,我想知道如何使快捷语法起作用。

最佳答案

您可以做的是将您的对象投影到一个复合对象,该复合对象包含集合中的项目和您要引入查询的对象。

您可以使用此Capture 函数来捕获变量:

function Capture(bindings, name) {
var benumerable = Enumerable.From(bindings),
itemname = name || 'Item';
return function (e) {
return e.Select(function (item) {
return benumerable.Concat(Enumerable.Return({ Key: itemname, Value: item }))
.ToObject("$.Key", "$.Value");
});
};
}

Let 绑定(bind)中使用它。

var query = Enumerable.From(data)
.Let(Capture({ Me: me }))
.Select("{ abbr: $.Me.transform($.Item), name: $.Item }")
.ToArray();

关于javascript - Linq.js 作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20451658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com