这个技术被称为什么?

时间:2016-07-29 20:05:03

标签: javascript

我来自C#。 C#语法的一个小例子:

// using System.Linq;

int[] array = { 1, 2, 3, 5 };
int result = array.SingleOrDefault(x => x % 2 == 0);

我希望convert语法为javascript语法:



Array.prototype.singleOrDefault = function (tsource) {
	var $self = this
	if ($self.length) {
  	for (let i = 0; i < $self.length; i++) {
    	if (tsource($self[i])) {
      	return $self[i]
      }
    }
    return null
  }
};

var test = function () {
  var array = [1, 2, 3, 5];
  var result = array.singleOrDefault(x => x % 2 === 0)
  if (result !== null) {
  	alert(result)
  }  
};
&#13;
<button onclick="test()">Click me</button>
&#13;
&#13;
&#13;

在C#中:.SingleOrDefault(TSource)被称为Linq method,它引用System.Linq命名空间。

所以,我的问题是:在这种情况下调用.singleOrDefault(x => x % 2 === 0)(在javascript中)?

2 个答案:

答案 0 :(得分:1)

我认为您应该使用JS库来调用相同的函数:https://linqjs.codeplex.com/

它包含大约90个mehtods

这是与您的方法相关的示例。

var jsonArray = [
{ "user": { "id": 100, "screen_name": "d_linq" }, "text": "to objects" },
{ "user": { "id": 130, "screen_name": "c_bill" }, "text": "g" },
{ "user": { "id": 155, "screen_name": "b_mskk" }, "text": "kabushiki kaisha" },
{ "user": { "id": 301, "screen_name": "a_xbox" }, "text": "halo reach" }
]
// ["b_mskk:kabushiki kaisha", "c_bill:g", "d_linq:to objects"]
var queryResult = Enumerable.From(jsonArray)
.Where(function (x) { return x.user.id < 200 })
.OrderBy(function (x) { return x.user.screen_name })
.Select(function (x) { return x.user.screen_name + ':' + x.text })
.ToArray();
// shortcut! string lambda selector
var queryResult2 = Enumerable.From(jsonArray)
.Where("$.user.id < 200")
.OrderBy("$.user.screen_name")
.Select("$.user.screen_name + ':' + $.text")
.ToArray();

答案 1 :(得分:0)