Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在嵌套数组中搜索并从该数组返回值?_Javascript_Lodash - Fatal编程技术网

Javascript 在嵌套数组中搜索并从该数组返回值?

Javascript 在嵌套数组中搜索并从该数组返回值?,javascript,lodash,Javascript,Lodash,我有一个API端点,它返回一个带有一堆游戏ID的JSON响应。这种反应看起来是这样的(是的,它被严重剪断) 我想要实现的可能需要一组单独的函数。但是我想在数组中搜索一个特定的ID,即用户输入的ID。根据它是在“完成”还是“未完成”,从该键返回值 假设我想在数组中搜索13的ID。该ID将在“未完成”中找到。如果是这样,我想返回“未完成”数组中的第一个ID,ID 12 如果我要在数组中搜索ID9,则会在“finished”中找到该ID,然后返回该ID(9) 如果我在数组中搜索ID12,它将在“unf

我有一个API端点,它返回一个带有一堆游戏ID的JSON响应。这种反应看起来是这样的(是的,它被严重剪断)

我想要实现的可能需要一组单独的函数。但是我想在数组中搜索一个特定的ID,即用户输入的ID。根据它是在“完成”还是“未完成”,从该键返回值

假设我想在数组中搜索
13
的ID。该ID将在“未完成”中找到。如果是这样,我想返回“未完成”数组中的第一个ID,ID 12

如果我要在数组中搜索ID
9
,则会在“finished”中找到该ID,然后返回该ID(
9

如果我在数组中搜索ID
12
,它将在“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 })