匹配数组中的值,即在对象数组中

时间:2018-05-14 08:48:02

标签: javascript arrays

我有一个包含如下对象的数组:

0:
depth:0
id:37
index:0
label:"user"
name:"r"
next:(3) [265, 355, 387]

我想将id与next: Array(3)

中的值匹配
findNext = function(idToMatch) {
    const nodes = this.state.nodes;
    for (let i = 0; i < nodes.length; i++){
        if (nodes.next[i] === idToMatch) { return nodes[i].id }
    }
};

idToMatch是一个整数,就像上面示例中的id:37一样。

const nodes = this.state.nodes;是包含上述对象的数组。

如何检查this.state.nodes[i].next是否包含idToMatch,如果是,则返回this.state.nodes[i].id

3 个答案:

答案 0 :(得分:1)

如果你能使用ES2016 Array.prototype.includes();

findNext = function(idToMatch) {
    const nodes = this.state.nodes;
    let matches = [];

    for (let i = 0; i < nodes.length; i++) {
        if (nodes[i].next.includes(idToMatch)) matches.push(nodes[i].id);
    }

    return matches;
};

如果不是:

findNext = function(idToMatch) {
    const nodes = this.state.nodes;
    let matches = [];

    for (let i = 0; i < nodes.length; i++){
        if (nodes[i].next.indexOf(idToMatch) > -1) matches.push(nodes[i].id);
    }

    return matches;
};

答案 1 :(得分:0)

您可以使用.find获取匹配的对象,然后获取所需对象的任何属性

this.state.nodes[i].next.find(o=> o === idToMatch)

答案 2 :(得分:0)

在循环中添加另一个for循环?像这样:

$3