arr.filter(callback[, thisArg])
Run Code Online (Sandbox Code Playgroud)
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
因此,这是我应该理解的文档中的示例。
Arr =一些数组,很棒。filter =数组具有的一种方法,很棒。回调=一些功能,基本上。大。那是[, thisArg]什么
查看一些关于stackoverflow的示例,结果显示:
objects.filter(function (obj) {
return obj.someIntProp <= 1000
});
Run Code Online (Sandbox Code Playgroud)
我了解这是如何工作的,我不需要使用它的帮助。我只想了解[, thisArg]应该如何告诉我该函数采用数组中的每个对象。我觉得我似乎错过了大多数人都可以在Coding 101中学习的显而易见的东西。
我直接在 Mongo 中运行查询select all items where field1=x, field2 =y, and field3=z(Robomongo、CLI,等等),对数十万个项目只需要不到一秒的时间:
db.items.find( {
$and: [
{ CreatingOrgId: 1 },
{ LocationId: 941 },
{ StatusId: 1}
]
} )
Run Code Online (Sandbox Code Playgroud)
然后,我尝试从 C# 驱动程序运行完全相同的东西,但它滞后了(只有“聚合过滤器”代码相关,其他所有内容都用于上下文):
FilterDefinition<BsonDocument> locationsFilter; = Builders<BsonDocument>.Filter.Eq("LocationId", 941);
FilterDefinition<BsonDocument> orgFilter = Builders<BsonDocument>.Filter.Eq("CreatingOrgId", 1);
FilterDefinition<BsonDocument> statusFilter = Builders<BsonDocument>.Filter.Eq("StatusId", 1);
FilterDefinition<BsonDocument> aggregateFilter = locationsFilter & statusFilter & orgFilter;
List<ItemViewModel> stuffList = mongoItemsCollection
.Find(aggregateFilter)
.Project(x => Mapper.Map<BsonDocument, StuffViewModel>(x))
.ToListAsync().Result;
Run Code Online (Sandbox Code Playgroud)
我在这里犯了什么错误?以下是 mongo 看到的查询:
编辑:看起来将项目映射到项目对象是在某种程度上杀死我的查询的原因。如果没有映射,它的速度相当快(大量记录只需几秒钟),如下所示:
var rawItems = mongoItemsCollection
.Find(aggregateFilter)
.ToListAsync().Result;
Run Code Online (Sandbox Code Playgroud)
编辑2:看起来automapper是这里问题的一个重要部分(采用bson“item”对象并将其转换为.NET视图模型)。如果有人想回答的话,我仍然对 .NET --> …
假设我们使用的db是 EF6 ,并且是 EF DbContext。假设用户可以输入五个可能的查询:
枚举运算符
{
平等的,
不等于,
少于,
多于,
任何
};
var operator = //某些用户选择的运算符,在上面枚举中可用的运算符中
var carAge = //int 由用户选择以指定所需的年龄
列出汽车;
开关(操作员)
{
case Operator.EQUAL
{
汽车 = db.Cars.Where(c=> c.Age == carAge).ToList();
}
case Operator.NOT_EQUAL
{
汽车 = db.Cars.Where(c=> c.Age != carAge).ToList();
}
case Operator.LESS_THAN
{
汽车 = db.Cars.Where(c=> c.Age c.Age > carAge).ToList();
}
案例运算符.ANY
{
汽车 = db.Cars.ToList();
}
}
我如何更有效地做到这一点?开关运算符看起来很傻。看起来这篇文章 …
这一切都始于tsc --init不工作......
有什么区别:
npm install -g typescript
npm install -g tsc
npm install -g ntsc
Run Code Online (Sandbox Code Playgroud)
我认为"tsc"只是打字稿的快捷方式,但列出它们似乎给出了不同的版本
PS C:\ angular2-app> npm list -g tsc
C:\ Users\Wheeeeee\AppData\Roaming\
npm└──tsc@1.20150623.0PS C:\ angular2-app> npm list -g typescript
C:\ Users\Wheeeeee\AppData\Roaming\
npm└──stykscript@1.8.10
那么,两者之间的区别是什么.打字稿是库和tsc某种命令行助手吗?
PS我真的不关心ntsc,如果你知道副手或因某种原因认为这是必须的,这只是问题的一部分.别这样说.
编辑:鉴于下面的答案,powershell如何知道我试图使用哪个tsk?我该如何指定?
我有我认为是一个完全无关紧要的查询 - 如果不存在具有匹配ID的值,则将值插入表中:
BEGIN
INSERT INTO [dbo].[Contact_Categories](Contact_Category_ID, Description)
VALUES (1, 'Internal')
WHERE NOT EXISTS( SELECT * FROM [dbo].[Contact_Categories] WHERE Contact_Category_ID = 1)
END
Run Code Online (Sandbox Code Playgroud)
我在where语句周围出错了.为什么?我如何实现目标?
我的目标是<head>只在某个元素存在的情况下加载javascript <body>.
但是,我遇到了一个问题:我正在加载一个Web组件,它只是在<script>其他地方托管,并被引入:
<script src="https://someurl.com/some-web-component.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
这个Web组件文件非常庞大,所以除非我们的内容管理系统(CMS)将其插入到正文中,否则我不想将其拉入.
我工作的限制是:
• <head>页面之间共享,因此我需要条件逻辑
•我无法控制<body>CMS插入的内容,它可能包含<my-web-component>标记
•我需要脚本来加载Web组件,所以我不能使用jQuery的$(document).ready,至少我认为我不能 - 因为浏览器不知道元素存在而抛出错误
这个plunker部分显示我的问题,减去所有Web组件的复杂性:
有什么方法吗?
足够简单 - 如果我没有使用任何observables或http调用,核心Angular是否需要RxJS?
在将来,我如何检查自己Angular是否真的需要X才能使用Hello World应用程序?
我已经阅读了几篇文章,其中一些是Angular Universal官方页面,此处的介绍等。
我不完全了解-Angular Universal服务器是否仍提供单个页面(大量的html),还是有一种方法可以配置Angular Universal以基于以下方式返回多个页面(一次应用程序的一部分)路线(请求/路线)?
最终目标是在不存在路由的情况下返回硬404(但是,就上下文而言,这超出了此问题的范围)。
对我来说令人困惑的部分是:
这是因为与服务器端渲染的HTML一起,我们还将向浏览器提供普通的客户端Angular应用程序。
然后,此Angular客户端应用程序将接管页面,从那里开始,所有内容都像正常的单页面应用程序一样工作,这意味着所有运行时渲染将像往常一样直接在客户端上进行。
那么,究竟是the server-side rendered HTML什么?它是预先渲染的WHOLE应用程序,还是某种程度上针对用户要求的“路线” /视图/内容?
我的最终目标是从客户端获得没有偏移的通用时间 - 只是UTC时间.我试着这样做:
Javascript : (new Date()).toUTCString(),输出日志:Thu, 17 Mar 2016 15:13:23 GMT,这正是我需要的.
然后我把它带到服务器并尝试将其转换为DateTimeOffset:
string dateTimeOffsetPattern = "ddd, dd MMM yyyy HH:mm:ss 'GMT'";
DateTimeOffset clientLoginTime = DateTimeOffset.ParseExact
(timeStringFromClient, dateTimeOffsetPattern, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
结果如下:
3/17/2016 3:13:23 PM -04:00
Run Code Online (Sandbox Code Playgroud)
它以某种方式调整了我本地(东方)偏移的时间.我不希望这种情况发生,我希望它只返回UTC时间,如下所示:
3/17/2016 3:13:23 PM +00:00
Run Code Online (Sandbox Code Playgroud)
PS我刚刚问了一个关于这个的问题,我道歉,因为我觉得它应该很容易,但我不明白.这应该非常简单,但看起来offset没有setter(除非我像往常一样完全缺少一些C#基础知识):
public TimeSpan Offset { get; }
Run Code Online (Sandbox Code Playgroud) 我有一个方法,它现在需要一个 id。我需要添加一个接受 id 列表的方法。我的选择是让其中一种方法调用另一种方法,如下所示:
void NotifyUsers(List<int> userIds) {//do things}
void NotifyUser(int userId)
{
NotifyUsers(new List<int>{userId})
}
Run Code Online (Sandbox Code Playgroud)
或者我可以将调用更改为NotifyUsers(new List<int>{9999}.
或者我可以使用泛型等。
这里的“最佳实践”是什么?
我知道这有点基于意见的问题,但似乎应该有一个标准,我找不到它。
angular ×3
c# ×3
javascript ×2
arrays ×1
filter ×1
html ×1
mongodb ×1
rxjs ×1
sql ×1
sql-server ×1
typescript ×1