我有一个Javascript对象:
var errorMap = {
100: 'You must enter a name.',
200: 'You must enter an address.',
300: 'You must enter a DOB.'
}
在我的代码的另一部分中,我收到一组错误代码:
var errorCodes = [100, 200, 500, 600];
我想要做的是将errorCodes
数组与errorMap
对象的键进行比较,并返回不所有的错误代码errorMap
中的相应键。在这种情况下,我想回复一下:
[500, 600]
我该怎么做?我可以访问jQuery。
答案 0 :(得分:7)
适用于现代浏览器的Javascript(适用于具有shim的旧版浏览器)
var missing = [100, 200, 500, 600].filter(function(v){
return !errorMap.hasOwnProperty(v)
});
//missing = [500, 600]
jQuery,如果需要遗留浏览器支持且不接受填充程序:
var missing = $.grep( [100, 200, 500, 600], function(v){
return !errorMap.hasOwnProperty(v)
});
//missing = [500, 600]
答案 1 :(得分:1)
jQuery并不是必需的,一个简单的for
循环也可以完成这项工作:
var missing = [];
for(var i = 0; i < errorCodes.length; i++) {
var code = errorCodes[i];
if(errorMap[code] === undefined) {
missing.push(code)
}
});
使用jQuery:
var missing = [];
$.each(errorCodes, function(i, code) {
if(errorMap[code] === undefined) {
missing.push(code)
}
});
答案 2 :(得分:0)
var notRealError = [];
for(var i = 0; i < errorCodes.length; ++i){
if(!errorMap[errorCodes[i]]) notRealError.push(errorCodes[i]);
}
notRealError
是一个包含地图中不存在的错误代码的数组。
答案 3 :(得分:0)
不需要jQuery这个。试试这个:
var result = [];
var l = errorCodes.length;
for (var i = 0; i < l; i++)
if (!errorMap.hasOwnProperty(errorCode[i]))
result.push(errorCode[i]);
答案 4 :(得分:0)
var returnCodes = [];
for (c in errorCodes) {
if (errorMap[errorCodes[c]] == undefined) {
returnCodes.push(errorCodes[c]);
}
}
return returnCodes;