let listOne = [Bill, Joe, Trever, Neil, Jim, Pam, Michael]
let listTwo = [Petter, Pam, Steven, Jim, Michael, Scott]
我有兩個串列,但我想創建一個只有兩個串列中的名稱的新串列。
[Jim, Pam, Michael]
我做了什么:
我創建了一個嵌套回圈來將每個名稱推送到一個新串列中
我需要什么幫助:
我覺得有更好的方法可以做到這一點。無需嵌套我的回圈。也許以某種方式同時過濾兩個串列
uj5u.com熱心網友回復:
您可以使用 Array.prototype.reduce,讓回呼搜索另一個串列,并且僅插入名稱,如果它在另一個串列中。
listOne.reduce((prev, cur)=>{
if(listTwo.includes(cur)){
prev.push(cur);
}
return prev;
});
uj5u.com熱心網友回復:
你可以這樣做:
let listOne = [Bill, Joe, Trever, Neil, Jim, Pam, Michael]
let listTwo = [Petter, Pam, Steven, Jim, Michael, Scott]
let result = listOne.filter(item => listTwo.includes(item))
uj5u.com熱心網友回復:
您可以使用Set和filter這里。檢查存在name的Set是有效率的,如果你要使用has的方法set。
let listOne = ["Bill", "Joe", "Trever", "Neil", "Jim", "Pam", "Michael"];
let listTwo = ["Petter", "Pam", "Steven", "Jim", "Michael", "Scott"];
const set = new Set(listOne);
const result = listTwo.filter(name => set.has(name));
// or
// const result = listTwo.filter(set.has.bind(set));
console.log(result);
uj5u.com熱心網友回復:
const listOne = ["Bill", "Joe", "Trever", "Neil", "Jim", "Pam", "Michael"]
const listTwo = ["Petter", "Pam", "Steven", "Jim", "Michael", "Scott"]
const newList = listOne.filter(item => listTwo.indexOf(item) > -1)
console.log(newList)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/354839.html
標籤:javascript 列表
