我試圖過濾掉emails已經存在的userData資料,但是只要資料email不一樣,我的代碼就會一遍又一遍地推送相同的資料。
這是我的代碼:
userData:[ {email: "[email protected]",
first_name: "Jane",
last_name: "Doe"},
{email: "[email protected]",
first_name: "john",
last_name: "doe"},
{email: "[email protected]",
first_name: "Mary",
last_name: "Jane"}
],
parseData:[ {email: "[email protected]",
first_name: "Jane",
last_name: "Doe"},
{email: "[email protected]",
first_name: "Johnny",
last_name: "Bravo"},
{email: "[email protected]",
first_name: "Jayson",
last_name: "Abuela"}
],
newData: []
var userData = this.userData
var parsedData = this.parseData
function(results) {
const parsedData = results.data
for(var j = 0; j < parsedData.length; j ){
userData.map((data)=>{
if(data.email.toLowerCase() != parseData[j].email.toLowerCase()){
newData.push(parsedData[j])
}else{
alert("This " parsedData[j].email " already exist.")
}
})
}
}
我期待user并獲得我的 newData 的推送,它確實被推送了每個資料的 5email次[email protected]。[email protected]我只希望它被推送一次。
uj5u.com熱心網友回復:
你不能用簡單的方法來做嗎?
const userData = [ {email: "[email protected]",
first_name: "Jane",
last_name: "Doe"},
{email: "[email protected]",
first_name: "john",
last_name: "doe"},
{email: "[email protected]",
first_name: "Mary",
last_name: "Jane"}
];
const parseData = [ {email: "[email protected]",
first_name: "Jane",
last_name: "Doe"},
{email: "[email protected]",
first_name: "Johnny",
last_name: "Bravo"},
{email: "[email protected]",
first_name: "Jayson",
last_name: "Abuela"}
];
const tempEmails = userData.map(x => x.email.toLowerCase());
const newEmails = parseData.filter(x => !tempEmails.includes(x.email.toLowerCase()));
console.log(newEmails);
無法弄清楚你想要哪種方式。您可以交換parseData,userData如果這不是正確的方法。
編輯:這些被稱為 lambda 函式。它們非常方便和簡單。我只是使用map()創建一個僅包含電子郵件字串的陣列。然后我使用filter()檢查陣列中的每個物件,如果電子郵件鍵包含在電子郵件字串的第一個映射中,則將其排除。簡單的東西。
uj5u.com熱心網友回復:
您的代碼不會測驗電子郵件不在另一個陣列中。它與另一個陣列的每個元素進行比較,并推送每個不匹配的元素。
創建一個Set包含所有電子郵件的parsedData. 然后您可以使用該.has()方法來測驗電子郵件是否已經存在。
const parsedDataSet = new Set(parsedData.map(({email}) => email.toLowerCase());
userData.forEach(u => {
if (!parsedDataSet.has(u.email.toLowerCase())) {
parsedData.push(u);
parsedDataSet.add(u.email.toLowerCase());
}
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/484846.html
標籤:javascript Vue.js 循环
