可能重复:
javascript测试是否存在嵌套对象键
我试图构建一个错误消息formset通过测试,如果某个对象是没有 undefined的,如果它不是undefined,那么我结束了该错误信息填充它.主要的问题是我必须验证每个嵌套对象是否是undefined,这导致一些相当丑陋的代码.这是一个例子:
errorsForField: function(fieldName, formsetName, formNumber) {
if (typeof this.model.errors != 'undefined'){
var fieldError = document.createElement('span');
$(fieldError).addClass('field-error');
// THE FOLLOWING LINE THROWS ERROR.
if (formsetName && _.isUndefined(this.model.errors[formsetName][fieldName]) != true) {
$(fieldError).text(this.model.errors[formsetname][fieldName]);
} else if (typeof this.model.errors[fieldName] != "undefined"){
$(fieldError).text(this.model.errors[fieldName]);
}
this.errors[fieldName] = fieldError.outerHTML;
return fieldError.outerHTML;
}
return false;
},
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,指出我不能确定[fieldName]的undefined object this.model.errors[formsetName].换句话说,我必须先确定是否this.model.errors[formsetName]为空,然后测试是否[fieldname]为空undefined.
这似乎是一个非常麻烦的解决方案.有任何改变这个的建议吗?
在jQuery中是否有与此语句等效的内容?
var value = document.getElementById(id).files[0];
Run Code Online (Sandbox Code Playgroud)
使用附加.files [0]的标准jQuery选择器似乎不起作用,我找不到.files的等效jQuery命令.有什么建议?
我正在使用它从input type ='file'表单元素中检索文件.
这是我的基本问题:我得到了一个currentTime.例如,750秒.我也有其含有1000〜2000的对象,其每一个有一个的阵列startTime,endTime和一个_id属性.鉴于此currentTime,我需要找到具有a startTime且endTime属于该范围的对象 - 例如startTime : 740,endTime : 755.
在Javascript中执行此操作的最有效方法是什么?
对于初学者来说,我只是做了这样的事情:
var arrayLength = array.length;
var x = 0;
while (x < arrayLength) {
if (currentTime >= array[x].startTime && currentTime <= array[x].endTime) {
// then I've found my object
}
x++;
};
Run Code Online (Sandbox Code Playgroud)
但我怀疑循环不是这里的最佳选择.有什么建议?
编辑:为了清楚起见,currentTime必须落在startTime和endTime
我的解决方案:我的数据结构为我提供了一些好处,使我能够简化一些事情.我已按照建议完成了基本二进制搜索,因为数组已经按startTime排序.我还没有完全测试过这个东西的速度,但我怀疑它的速度要快一些,特别是对于更大的阵列.
var binarySearch = function(array, currentTime) {
var low = 0;
var high = …Run Code Online (Sandbox Code Playgroud) 在尝试用Mongoose构造一些静态时,我似乎无法在调用find()或findOne()时访问error参数.这是我的静态:
User.statics.authenticate = function(login, password, cb){
return this.model('User').findOne({
username: login,
password: password
}, function(err, user){
console.log("error", err);
console.log("user", user);
}).exec(cb);
};
Run Code Online (Sandbox Code Playgroud)
我试着用这样的东西来称它:
exports.session = function(req, res){
return User.authenticate(req.body.login, req.body.password, function(err, doc){
console.log('err', err);
console.log('doc', doc);
});
};
Run Code Online (Sandbox Code Playgroud)
在任何情况下,无论findOne查询的结果如何,err始终为null.关于这里发生了什么的任何想法?也许我无法绕过所有这些回调......
使用Postgres我有一个有conversations和的模式conversationUsers.每个conversation都有很多conversationUsers.我希望能够找到具有确切指定数量的对话conversationUsers.换句话说,提供了一个userIds(例如[1, 4, 6])我希望能够找到仅包含那些用户的对话的数组,而不是更多.
到目前为止,我试过这个:
SELECT c."conversationId"
FROM "conversationUsers" c
WHERE c."userId" IN (1, 4)
GROUP BY c."conversationId"
HAVING COUNT(c."userId") = 2;
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎也回归了包括这两个用户在内的对话.(例如,如果对话还包括"userId"5 ,则返回结果).
javascript ×4
algorithm ×1
express ×1
jquery ×1
loops ×1
mongoose ×1
node.js ×1
object ×1
postgresql ×1
properties ×1
sequelize.js ×1
sql ×1
time ×1