2 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
我認(rèn)為這個(gè)問題令人困惑的部分是你基本上沒有使用k. 你只檢查對(duì)[ j, k[anything][0] ]
這k[anything][1]與過濾無關(guān),對(duì)嗎?如果是這樣,請看下面的代碼
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 directly
let results = k.filter(kPair => {
let roadsContainPair = roads.some(roadPair => {
// check the two cases
// [j, kPair[0]] and [kPair[0], j]
return (roadPair[0] === j && roadPair[1] === parseInt(kPair[0])) ||
(roadPair[0] === parseInt(kPair[0]) && roadPair[1] === j);
});
// since we only want the pair if roads DOESN'T contain it
// we return the negative of roadsContainPair
// i.e. if the current "pair" is found in roads, filter it out
return !roadsContainPair;
});
// results = [["5", 2]];

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
用于some()測試數(shù)組中的條件是否匹配。在您的情況下使用它來if查看是否有任何對(duì)在roads.
用于includes()測試一個(gè)值是否在數(shù)組中。過濾時(shí)使用它k。
const j = 1;
let k = [
["0", 2],
["3", 2]
];
let roads = [
[0, 1],
[0, 3],
[1, 2],
[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)))) {
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)))) {
k = k.filter(([kx]) => !k_parsed.includes(parseInt(kx)));
}
console.log(k);
添加回答
舉報(bào)