如何检查数组 X 中是否存在整数对,然后从数组 Y 中删除构成对的特定值?

如何检查j, k[anything][0]array 中是否存在对,然后从 arrayroads中过滤掉形成 array 中的对的特定值?这些对可以翻转为.roadskk[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我写了一个块,但是当since中没有更多元素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]];


慕哥6287543
浏览 85回答 2
2回答

萧十郎

我认为这个问题令人困惑的部分是你基本上没有使用k. 你只检查对[ j, k[anything][0] ]这k[anything][1]与过滤无关,对吗?如果是这样,请看下面的代码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]];// results will return the filtered array// you can instead change `let results` to `k`// if you want to set it directlylet results = k.filter(kPair => {&nbsp; &nbsp; let roadsContainPair = roads.some(roadPair => {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // check the two cases&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // [j, kPair[0]] and [kPair[0], j]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return (roadPair[0] === j && roadPair[1] === parseInt(kPair[0])) ||&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (roadPair[0] === parseInt(kPair[0]) && roadPair[1] === j);&nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; // since we only want the pair if roads DOESN'T contain it&nbsp; &nbsp; // we return the negative of roadsContainPair&nbsp; &nbsp; // i.e. if the current "pair" is found in roads, filter it out&nbsp; &nbsp; return !roadsContainPair;});// results = [["5", 2]];

红糖糍粑

用于some()测试数组中的条件是否匹配。在您的情况下使用它来if查看是否有任何对在roads.用于includes()测试一个值是否在数组中。过滤时使用它k。const j = 1;let k = [&nbsp; ["0", 2],&nbsp; ["3", 2]];let roads = [&nbsp; [0, 1],&nbsp; [0, 3],&nbsp; [1, 2],&nbsp; [1, 3]];let k_parsed = k.map(([x]) => parseInt(x));if (roads.some(([rx, ry]) => k_parsed.some(kx => (rx == j && ry == kx) || (rx == kx && ry == j)))) {&nbsp; k = k.filter(([kx]) => !k_parsed.includes(parseInt(kx)));}console.log(k);k = [["0", 2],["3", 2],["5", 2]];roads = [[0,1],[0,3],[1,2],[1,3],[5,6],[5,7]];k_parsed = k.map(([x]) => parseInt(x));if (roads.some(([rx, ry]) => k_parsed.some(kx => (rx == j && ry == kx) || (rx == kx && ry == j)))) {&nbsp; k = k.filter(([kx]) => !k_parsed.includes(parseInt(kx)));}console.log(k);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript