Javascript 在嵌套数组中搜索并从该数组返回值?
我有一个API端点,它返回一个带有一堆游戏ID的JSON响应。这种反应看起来是这样的(是的,它被严重剪断) 我想要实现的可能需要一组单独的函数。但是我想在数组中搜索一个特定的ID,即用户输入的ID。根据它是在“完成”还是“未完成”,从该键返回值 假设我想在数组中搜索Javascript 在嵌套数组中搜索并从该数组返回值?,javascript,lodash,Javascript,Lodash,我有一个API端点,它返回一个带有一堆游戏ID的JSON响应。这种反应看起来是这样的(是的,它被严重剪断) 我想要实现的可能需要一组单独的函数。但是我想在数组中搜索一个特定的ID,即用户输入的ID。根据它是在“完成”还是“未完成”,从该键返回值 假设我想在数组中搜索13的ID。该ID将在“未完成”中找到。如果是这样,我想返回“未完成”数组中的第一个ID,ID 12 如果我要在数组中搜索ID9,则会在“finished”中找到该ID,然后返回该ID(9) 如果我在数组中搜索ID12,它将在“unf
13
的ID。该ID将在“未完成”中找到。如果是这样,我想返回“未完成”数组中的第一个ID,ID 12
如果我要在数组中搜索ID9
,则会在“finished”中找到该ID,然后返回该ID(9
)
如果我在数组中搜索ID12
,它将在“unfinished”中找到,那么返回unfinished中的第一个ID,ID 12
希望这是有意义的
我只是在搜索数组时做了一些测试,但一点运气都没有
const test = _.findKey(game_ids, function(o) { return o.game_id == 8; });
下面是一个纯JavaScript解决方案:
var response = {"finished":[{"game_id":8},{"game_id":9},{"game_id":11}],"unfinished":[{"game_id":12},{"game_id":13}]};
function find(response, value) {
var i;
for (i = 0; i < response.finished.length; i++) {
if (response.finished[i].game_id === value) {
return value;
}
}
for (i = 0; i < response.unfinished.length; i++) {
if (response.unfinished[i].game_id === value) {
return response.unfinished[0].game_id;
}
}
return undefined;
}
var response={“finished”:[{“game_id”:8},{“game_id”:9},{“game_id”:11}],“unfinished”:[{“game_id”:12},{“game_id”:13}};
函数查找(响应、值){
var i;
对于(i=0;i
这里有一个纯JavaScript解决方案:
var response = {"finished":[{"game_id":8},{"game_id":9},{"game_id":11}],"unfinished":[{"game_id":12},{"game_id":13}]};
function find(response, value) {
var i;
for (i = 0; i < response.finished.length; i++) {
if (response.finished[i].game_id === value) {
return value;
}
}
for (i = 0; i < response.unfinished.length; i++) {
if (response.unfinished[i].game_id === value) {
return response.unfinished[0].game_id;
}
}
return undefined;
}
var response={“finished”:[{“game_id”:8},{“game_id”:9},{“game_id”:11}],“unfinished”:[{“game_id”:12},{“game_id”:13}};
函数查找(响应、值){
var i;
对于(i=0;i
因此,在基本级别上,您需要遍历两个数组以找到一些值
你提到了lodash,它有一个。有了这个函数,您可以调用这个函数两次,每个数组调用一次。确保处理未找到游戏的情况
例:
因此,在基本层面上,您需要遍历两个数组以找到一些值 你提到了lodash,它有一个。有了这个函数,您可以调用这个函数两次,每个数组调用一次。确保处理未找到游戏的情况 例: 如果在“已完成”中未找到游戏id,则使用带有短路的
\uuuu.find()
尝试未完成,如果未找到任何内容,则返回“已完成”中的第一个:
const data={“finished”:[{“game_id”:8}、{“game_id”:9}、{“game_id”:11}、“unfinished”:[{“game_id”:12}、{“game_id”:13};
const findId=(game_id)=>124; find(data.finished,{game_id})| | | | | | find(data.unfinished,{game_id})&&data.unfinished[0])| data.unfinished[0];
console.log(findId(13));
console.log(findId(9));
console.log(findId(200))代码>
如果在“已完成”中未找到游戏id,则使用带有短路的\uuu.find()
尝试未完成,如果未找到,则返回“已完成”中的第一个:
const data={“finished”:[{“game_id”:8}、{“game_id”:9}、{“game_id”:11}、“unfinished”:[{“game_id”:12}、{“game_id”:13};
const findId=(game_id)=>124; find(data.finished,{game_id})| | | | | | find(data.unfinished,{game_id})&&data.unfinished[0])| data.unfinished[0];
console.log(findId(13));
console.log(findId(9));
console.log(findId(200))代码>
因此,如果完成,返回id,如果未完成,返回id为未完成数组中第一个项目的返回id。如果什么也没找到怎么办?没错!如果没有找到任何内容,可能会再次返回未完成的第一个ID。还没有考虑过这种情况=)所以,如果完成,返回id,如果未完成,返回id是未完成数组中第一项的未完成返回id。如果什么也没找到怎么办?没错!如果没有找到任何内容,可能会再次返回未完成的第一个ID。我还没想过那种情况呢谢谢!非常有帮助和教育意义!它对=)起作用,谢谢!非常有帮助和教育意义!它的工作原理是:)
var targetVal = userInput;
game_id = _.find(apiResponse. finished, { game_id: targetVal })