我有一个包含对象的数组。我试图找出该数组是否缺少一个ID。我正在使用的代码是返回部分匹配,例如允许“1”匹配“10”,“11”,“12”,“13”等。如果我迭代为字符串,或者将搜索项和id都转换为数字,就会发生这种情况。例如下面的代码:jQuery inArray和Javascript IndexOf返回部分匹配。我需要检查完整匹配
var loadUserTemplate = function(json){
var firstArray = json[0];
var parsed = (JSON.parse(firstArray));
var gridStack = $('.grid-stack-item');
var plength = parsed.length;
gridStack.each(function(index){
var gridstackId = Number($(this).attr('data-custom-id'));
for(var j=0; j < plength; j++){
var doesNotContain = Number(parsed[j].id.indexOf(gridstackId));
console.log(typeof doesNotContain);
if(doesNotContain === -1){
console.log(gridstackId + " is not in " + parsed[j].id);
}
}
}
生成此在的console.log(我只包括第一个数字,注意它是如何发现1在10 - 19):
number
1 is not in 2
number
1 is not in 3
number
1 is not in 4
number
1 is not in 5
number
1 is not in 6
number
1 is not in 8
number
1 is not in 9
number
1 is not in 20
number
1 is not in 22
number
1 is not in 23
number
1 is not in 24
number
1 is not in 25
number
1 is not in 26
我已经试过的jQuery (inArray)和indexOf具有相同的结果。我如何找到完整匹配,而不是部分匹配?
更新:解析是firstArray解析它是:
[{"x":"0","y":"0","width":"12","height":"5","id":"1"},{"x":"0","y":"5","width":"6","height":"2","id":"2"},{"x":"6","y":"5","width":"6","height":"2","id":"3"},{"x":"0","y":"7","width":"6","height":"2","id":"4"},{"x":"6","y":"7","width":"6","height":"2","id":"5"},{"x":"0","y":"9","width":"12","height":"8","id":"6"},{"x":"0","y":"17","width":"4","height":"6","id":"8"},{"x":"4","y":"17","width":"4","height":"6","id":"9"},{"x":"8","y":"17","width":"4","height":"6","id":"10"},{"x":"0","y":"23","width":"4","height":"6","id":"11"},{"x":"4","y":"23","width":"4","height":"6","id":"12"},{"x":"8","y":"23","width":"4","height":"6","id":"13"},{"x":"0","y":"29","width":"6","height":"8","id":"14"},{"x":"6","y":"29","width":"6","height":"8","id":"15"},{"x":"0","y":"37","width":"4","height":"6","id":"16"},{"x":"4","y":"37","width":"4","height":"6","id":"17"},{"x":"8","y":"51","width":"4","height":"6","id":"18"},{"x":"0","y":"43","width":"4","height":"6","id":"19"},{"x":"4","y":"51","width":"4","height":"6","id":"20"},{"x":"8","y":"57","width":"4","height":"6","id":"21"},{"x":"0","y":"57","width":"6","height":"8","id":"22"},{"x":"6","y":"63","width":"6","height":"8","id":"23"},{"x":"0","y":"65","width":"6","height":"8","id":"24"},{"x":"6","y":"71","width":"6","height":"8","id":"25"},{"x":"0","y":"79","width":"12","height":"10","id":"26"}]
gridstackId是对DOM中的元素的数据的自定义-ID标签。
比较呢? 'Number(parsed [j] .id)=== gridstackId'。仅供参考,'indexOf'总是返回一个数字,所以不需要将结果传递给'Number'。你在'parsed [j] .id.indexOf(gridstackId)'中做的是检查**字符串**(例如)'“10”'是否包含字符'“1”'这当然是真的。 –
不,它不返回部分匹配,'[10,11,14] .indexOf(1)'是最明确的虚假(-1)。你只是做错了吗?什么'parsed [j] .id'和'gridstackId'实际包含 – adeneo
@adeneo parsed是以下数据的JSON.parse:[{“x”:“0”,“y”:“0”,“width” : “12”, “高度”: “5”, “ID” 为 “1”},{ “×”: “0”, “Y”: “5”, “宽度”: “6”, “高度” : “2”, “ID”: “2”},{ “×”: “6”, “Y”: “5”, “宽度”: “6”, “高度”: “2”, “ID” : “3”},{ “×”: “0”, “Y”: “7”, “宽度”: “6”, “高度”: “2”, “ID”: “4”},{” x“:”6“,”y“:”7“,”width“:”6“,”height“:”2“,”id“:”5“}等等,gridstackId是数据ID DOM上的元素。 – Mike