我有一个包含如下对象的数组:
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
?
答案 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