亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢查數組 X 中是否存在整數對,然后從數組 Y 中刪除構成對的特定值?

如何檢查數組 X 中是否存在整數對,然后從數組 Y 中刪除構成對的特定值?

慕哥6287543 2023-05-25 17:10:57
如何檢查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]];
查看完整描述

2 回答

?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

我認為這個問題令人困惑的部分是你基本上沒有使用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 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]];


查看完整回答
反對 回復 2023-05-25
?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

用于some()測試數組中的條件是否匹配。在您的情況下使用它來if查看是否有任何對在roads.


用于includes()測試一個值是否在數組中。過濾時使用它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);


查看完整回答
反對 回復 2023-05-25
  • 2 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號