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

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

檢查關聯對象中每個鍵的兩個值是否為 true

檢查關聯對象中每個鍵的兩個值是否為 true

瀟湘沐 2023-09-14 20:32:19
我有一個對象,寫如下:var color = "darkred";var source = "person1"; //this is generated elsewhere and changesvar target = "work23"; //this is generated elsewhere and changeslink = {              color: color,              source: source,              target: target,              value:1            }此對象被添加到數組中,如下所示,該函數旨在首先檢查它是否已存在于數組中:linksvar links = [];function person_linker(link) {  for (var key in links) {    if (links[key].source === link.source && links[key].target === link.target) {    }    else    {      links.push(link);    }  }}我遇到的問題是它似乎并沒有真正執行此檢查,而只是為其中有多少鍵添加對象。我讀到的所有內容都表明,編寫 if 語句就是進行這種檢查的方式,但大多數信息都假設你只追求每個鍵的一個值。很明顯,&&不是要走的路,但是我已經嘗試將兩者分開,執行find,indexOf和filter語句,但似乎沒有任何效果。從技術上講,代碼返回了我想要的內容,但由于它允許添加多個對象,因此在執行檢查時會占用內存并創建虛假條目 - 可能會向對象添加數萬行。我在這里做錯了什么?我確信這是一個簡單的修復,但我一輩子都無法弄清楚Javascript想要什么。linklinkslinklinks
查看完整描述

1 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

您需要使用數組篩選方法。這是我用來檢查是否已添加鏈接的示例。此外,它將更有效率,因為它將在數組中找到呈現的鏈接后跳過所有不必要的檢查。oncelinks


let color = "darkred";

let source = "person1"; //this is generated elsewhere and changes

let target = "work23"; //this is generated elsewhere and changes


let link = {

? color: color,

? source: source,

? target: target,

? value: 1,

};


const links = [];


function person_linker(link) {

? const linkAlreadyAdded = links.some(presentedLink => {

? ? return (presentedLink.source === link.source) &&

? ? ? (presentedLink.target === link.target)

? });


? if (linkAlreadyAdded) {

? ? console.log('Check failed.');

? } else {

? ? console.log('Check passed.');

? ? links.push(link);

? }

}

console.log(links);

person_linker(link);

console.log(links);

person_linker(link);

console.log(links);


查看完整回答
反對 回復 2023-09-14
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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