大家好,感谢您的帮助。
你好在游戏引擎中有一个上下文,我想知道是否存在一个简单的方法来返回每个数组?例如:[真,真,假,假] 这里的代码片段让我看起来更简单干净,但与我需要做的非常相似。
Gate1 = [];
Gate1 = [[3,4],[4,6]]; // [[ItemID,NbItem],[ItemID,NbItem]]
function check(ID, NEED, GVariable) {
for (var F=0; F<ID.length; F++) {
var Founds = [ID[F],NEED[F]];
if (Founds === GVariable[F]){
//return stop the loop, but i need to test all ID.length and return true or false in array it in array
return true;
}
else {return false;}
}
}
var Get = check([3,4,10,11],[4,6,8,7],Gate1);
console.log(Get); //need to be === Get[[true,true,false,false]]
alert("Gets= "+Get+'\n'+'But i want = [true,true,false,false]');
&#13;
答案 0 :(得分:1)
您可以使用哈希表并检查所需的值。然后返回Array#map
一个包含结果的数组。
我强烈建议您使用小写字母将变量重命名为更常见的样式。
function check(ID, NEED, GVariable) {
var hash = Object.create(null);
GVariable.forEach(function (a) {
hash[a.join('|')] = true;
});
return ID.map(function (id, i) {
return hash[[id, NEED[i]].join('|')] || false;
});
}
var Gate1 = [[3, 4], [4, 6]], // [[ItemID,NbItem],[ItemID,NbItem]],
Get = check([3, 4, 10, 11], [4, 6, 8, 7], Gate1);
console.log(Get); // [true, true, false, false]
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 1 :(得分:1)
您还可以压缩ID
和NEED
数组,并使用every
函数比较压缩数据和GVariable
数组:
function checkit(ID, NEED, GVariable) {
var result = [], arrays = [ID, NEED];
zipped = arrays[0].map(function(_,i){
return arrays.map(function(array){return array[i]})
});
zipped.forEach(function(arr, idx) {
result.push(arr.every(function(elt, i) {
return (elt == GVariable[i][idx]);
}))
})
return result;
}
var Gate1 = [[3,4],[4,6]];
var Get = checkit([3,4,10,11],[4,6,8,7],Gate1);
console.log(Get);
答案 2 :(得分:0)
试试这个...使用JSON.stringify()
Gate1 = [];
Gate1 = [[3,4],[4,6]]; // [[ItemID,NbItem],[ItemID,NbItem]]
function check(ID, NEED, GVariable) {
for (var F=0; F<ID.length; F++) {
var Founds = [ID[F],NEED[F]];
if (JSON.stringify(Founds) == JSON.stringify(GVariable[F])){
//return stop the loop, but i need to test all ID.length and return true or false in array it in array
return true;
}
else {return false;}
}
}
var Get = check([3,4,10,11],[4,6,8,7],Gate1);
console.log(Get); //need to be === Get[[true,true,false,false]]
alert("Gets= "+Get+'\n'+'But i want = [true,true,false,false]');