我看到很多关于如何在 javascript 中获取数组的差异和对称差异的帖子,但我没有找到任何关于如何找到差异的内容,包括重复项。
例如:
let original = [1];
let updated = [1, 1, 2];
difference(updated, original);
// Expect: [1, 2]
Run Code Online (Sandbox Code Playgroud)
有没有一种优雅的方法来做到这一点?我对使用普通 javascript 或 lodash 的解决方案持开放态度。
谢谢!
更新
为了澄清,应该支持无限数量的重复。另一个例子:
let original = [1, 1];
let updated = [1, 1, 1, 1, 1, 2];
difference(updated, original);
// Expect: [1, 1, 1, 2]
Run Code Online (Sandbox Code Playgroud)
更新 2
我意识到原来的要求可能有些混乱。确实应该支持无限重复,但顺序不应该影响输出。
例子:
let original = [1, 1, 2];
let updated = [1, 2, 1, 1, 1];
difference(updated, original);
// Expect: [1, 1]
Run Code Online (Sandbox Code Playgroud) 首先,我只想说我已阅读了与此主题相关的所有其他主题,但没有任何运气.这是问题的细分:
目标
为了满足目标1,我创建了一个Ember初始化程序,它在应用程序首次启动时运行(如果有更好的位置,我完全愿意接受建议).为了满足目标2,我从Sails中检索CSRF令牌,然后尝试使用Ember.$.ajaxSetup()以确保CSRF令牌作为header(X-CSRF-Token)或parameter(_csrf)传递.我还确保我使用该withCredentials选项来确保设置cookie.这是代码:
// initializers/csrf.js
import Ember from 'ember';
import config from '../config/environment';
export function initialize() {
Ember.$.get(config.APP.API_URL + '/csrfToken').then(function(result) {
Ember.$.ajaxSetup({
data: {
'_csrf': result._csrf
},
xhrFields: { withCredentials: true }
});
}, function(error) {
console.log(error);
});
}
export default {
name: 'csrf',
initialize: initialize
};
Run Code Online (Sandbox Code Playgroud)
所有这些看起来都有效,因为我在Chrome开发工具中可以看到正在检索CSRF令牌,当我发出AJAX请求时,我看到附加到POST数据的数据或添加为标题(尝试了两个选项).这是我正在运行的代码和所有相关标头:
Ember.$.post(config.APP.API_URL + '/auth/register', {
'email': _this.get('email'),
'password': _this.get('password')
}).then(function(response) {
console.log('It worked!');
});
Run Code Online (Sandbox Code Playgroud)
POST /auth/register HTTP/1.1
Host: localhost:1337
Connection: keep-alive
Content-Length: …Run Code Online (Sandbox Code Playgroud) 我已经阅读了大约 20 篇关于重复事件数据建模选项的不同帖子,并最终确定了一个实现,但在最终细节方面仍然需要一些帮助。
首先,这里描述了我要完成的任务和要求:
显然,我的应用程序的很大一部分是基于调度的。具体来说,我系统的这个组件允许企业客户安排家庭服务的约会。这些约会可以是单次发生的,也可以是重复发生的。虽然这些约会是典型的,因为它们有开始/结束时间等,但每个约会也有与之相关的数据。该数据可能包括诸如入住时间、退房时间、备注等内容。
为了存储重复约会,我的选择是要么在预定时间点生成每个实例,然后在这些实例运行时在数据库中生成新实例,要么即时计算要返回的这些实例。我最终选择了后者,因为我认为从长远来看,该实现更清洁,更易于维护。
话虽如此,根据这篇文章的见解,我选择将我的重复模式存储为 RRULE 字符串,并使用 PGV8 和rrule.js库进行任何计算。那篇文章提到了物化视图的使用(阅读了它们,但从未使用过),但我不确定它是否适用于我的情况,因为我必须在定期约会更改或创建时重新生成这些。似乎我还需要为每个业务创建一个实体化视图,并且不确定这会如何影响存储/性能,因为可能有 1000 个业务。如果您对此有任何见解,请告诉我。
这个想法是有一个表,Appointment,其中包含与约会的实际日期、时间和重复(如果适用)相关的数据。它将至少包含以下字段:
然后,第二个表,AppointmentData,将存储有关约会本身的任何元数据。例如,它可能包含以下字段:
在AppointmentData当实例只会产生Appointment实际上是由服务提供商启动。
一般来说,我只需要能够在任何给定时间检索 31 天或更少的约会(除了检索单个实例)。也就是说,我的想法是能够将开始和结束日期传递给数据库,该数据库将找到该范围内所有约会的单次出现。此外,对于包含重复模式的任何记录,我将使用我的 PLV8 函数返回该范围内的日期列表。该rrule.js 库有一个函数可以返回重复模式 ( rule.between(new Date(2012, 7, 1), new Date(2012, 8, 1))) 的所有日期。
这是我有点磕磕绊绊的地方。现在我在数据库中有一个可以动态计算重复日期的函数,我有点不清楚如何将这些与单个事件“融合”在一起并将它们作为单个结果集返回。请注意,对于每个重复出现的实例,我还需要返回表中的所有列Appointment,例如serviceID.
如果有什么不清楚的,请告诉我。
提前致谢!
我正在构建的系统有一个事件组件,其中一部分是创建重复事件的能力.在我的数据库中,我将所有事件存储在UTC中.当用户日历上显示定期事件时,应始终以"待机时间"显示.因此,例如,如果我每周三下午1:00创建一个定期事件,无论夏令时如何,都应该始终在下午1:00.
我遇到的问题是,每当我尝试使用Moment.js格式化此日期时,Moment总是会考虑DST转换并相应地更新事件.以我在前面的例子为例,在2016年,DST转变发生在3月13日,所以如果我的预约在2016年2月被预订,那么每次预约到3月13日都会正确输出为下午1:00.3月13日之后,DST转变已经应用,我现在所有的活动都提前了一个小时.
有没有推荐的方法来处理这个?我似乎找不到让Moment"忽略"DST的方法,也没有在搜索时找到合适的解决方案.
不确定这有多重要,但我在输出日期时使用Moment Timezone转换为用户的本地时区.
谢谢!
为了使用Sharp的Node库进行一些图像处理,我必须将Azure App Service上的node可执行文件升级到64位。我是通过手动下载可执行文件,然后在中设置其路径来实现的IISNode.yml。
不幸的是,当我启动该应用程序时,它引发以下错误:
应用程序引发了未捕获的异常并被终止:错误:%1不是有效的Win32应用程序。
\\?\D:\home\site\wwwroot\node_modules\bcrypt\build\Release\bcrypt_lib.node
at Error (native)
at Object.Module._extensions..node (module.js:597:18)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Function.cls_wrapMethod [as _load] (D:\home\site\wwwroot\node_modules\newrelic\lib\shimmer.js:256:38)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at bindings (D:\home\site\wwwroot\node_modules\bindings\bindings.js:76:44)
at Object.<anonymous> (D:\home\site\wwwroot\node_modules\bcrypt\bcrypt.js:3:35)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Function.cls_wrapMethod [as _load] (D:\home\site\wwwroot\node_modules\newrelic\lib\shimmer.js:256:38)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (D:\home\site\wwwroot\node_modules\bookshelf-bcrypt\index.js:5:14)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
Run Code Online (Sandbox Code Playgroud)
我正在使用Appveyor CI系统构建和部署应用程序。这是我 …