0

我有一个 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];

我想做的是将数组errorCodeserrorMap对象的键进行比较,并返回所有在. 在这种情况下,我想取回这个:errorMap

[500, 600]

我该怎么做呢?我可以访问 jQuery。

4

5 回答 5

7

现代浏览器的 Javascript(在带有shim的旧浏览器中工作)

var missing = [100, 200, 500, 600].filter(function(v){
    return !errorMap.hasOwnProperty(v)
});

//missing = [500, 600]

如果需要旧版浏览器支持并且不接受 shim,则使用 jQuery:

var missing = $.grep( [100, 200, 500, 600], function(v){
    return !errorMap.hasOwnProperty(v)
});

//missing = [500, 600]
于 2012-07-11T19:33:41.417 回答
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)
    }
});
于 2012-07-11T19:32:26.957 回答
0
var notRealError = [];
for(var i = 0; i < errorCodes.length; ++i){
    if(!errorMap[errorCodes[i]])  notRealError.push(errorCodes[i]);
}

notRealError是一个数组,其中包含地图中没有的错误代码。

于 2012-07-11T19:32:40.130 回答
0

这个不需要jQuery。尝试这个:

var result = [];
var l = errorCodes.length;
for (var i = 0; i < l; i++)
    if (!errorMap.hasOwnProperty(errorCode[i]))
        result.push(errorCode[i]);
于 2012-07-11T19:33:19.023 回答
0
var returnCodes = [];

for (c in errorCodes) {
    if (errorMap[errorCodes[c]] == undefined) {
        returnCodes.push(errorCodes[c]);
    }
}

return returnCodes;
于 2012-07-11T19:34:16.687 回答