0
배열에 대한 일련의 논리 테스트를 실행하려고합니다. 각 배열은 1 개의 ID 번호와 1 개의 항목을 포함합니다. 다음을 확인해야합니다 : ID 번호 1이 배열에 나타나면 신발 또는 양말 (신발 또는 양말 이외의 다른 것은 false)을 포함해야하며 그 중 적어도 하나는 [1, sock] 및 [1, 구두]. ID 1은 발생하지 않아도되며, 나중에 발생하면 ID 1이 적용됩니다. 마찬가지로 ID 2에 대한 조건도 같습니다. 필자는 함수에 무엇을 찾을 지 알려주는 객체 배열 (내 함수의 var f)을 제공하려고했습니다. 내 논리는 여기에 배열에 단 하나의 객체가 있다면 잘 작동하지만, 한번 더 추가하면 실패합니다.Javascript가 배열을 반복하고 논리 문을 확인합니다.
항목 배열을 병합하는 것이 잘못 될 것이라고 생각합니다. 이 같은 것을 할 수있는 좋은 방법이 있을까요? test_data는 [1 '양말', '신발'], [1] 인 경우
var _ = require('lodash');
function d(msg) {
console.log(msg);
}
var test_data = [[1,'shoe'],[1,'sock'], [2, 'apple'], [2, 'pear']];
function checker(array){
var f = [{id_num: 1, item: ['shoe', 'sock']}, {id_num: 2, item: ['apple', 'pear']}];
var mm = true;
var inLine;
var valids = function(obj){
vlist = [];
_.forEach(obj, function(item){
vlist.push(item.item);
});
return _.flatten(vlist);
};
_.forEach(f, function(obj){
_.forEach(obj.item, function(zone){
inLine = false;
_.forEach(t, function(line){
if(_.contains(valids(f), line[1])){
if(_.contains(line, obj.id_num) && _.contains(line, zone)){
inLine = true;
}
} else { inLine = false; }
});
mm = mm && inLine;
});
});
d(mm);
}
checker(test_data);
예상되는 결과의 예는
것이다. 예상 결과는 2가 발생했기 때문에 참이어야합니다. 값이 나타나는 경우 테스트는 ... 적용이의