【发布时间】:2020-10-20 00:31:37
【问题描述】:
如何检查数组roads 中是否存在j, k[anything][0] 对,然后从数组k 中过滤掉构成数组roads 中的对的特定值?对可以翻转为k[anything][0], j。
例如,[1, 0] 和 [1, 3] 是否存在于 roads 中?或[0, 1] 和[3, 1]。
const j = 1;
let k = [["0", 2],["3", 2]];
const roads = [[0,1],[0,3],[1,2],[1,3]];
我写了一个块,但是当k 中没有更多元素时它会在迭代时中断,因为roads.length 大于k.length。
到目前为止我所拥有的。仅供参考,它坏了:
for(let i = 0; i < k.length; i++) {
let pairs = ([a, b]) => a === k[i][0] && b === j || a === j && b === k[i][0];
if(roads.some(pairs)) {
k = k.filter(x => x[0] !== k[i][0])};
};
console.log(k)
期望的结果:
k = [];
第二个例子:
const j = 1;
let k = [["0", 2],["3", 2],["5", 2]];
const roads = [[0,1],[0,3],[1,2],[1,3],[5,6],[5,7]];
第二个期望的结果:
k = [["5", 2]];
【问题讨论】:
-
你为什么使用
k[i]?i只是roads的索引,与k无关。 -
k可以长于 2 吗? -
为什么
[1, 2]不在预期结果中?k[0][0]或k[1][0]中没有2。 -
并且
[0, 3]应该在结果中,因为它没有j。 -
这个问题不是很清楚。这些对是否重要,或者只是检查
k中是否存在任何数字在roads? Are you trying to find any roads that contain any of the pairs ink 中存在?我建议添加另一个示例,该示例使用实际值而不是空数组显示所需结果,因为没有太多可做的事情
标签: javascript for-loop filter