我試圖通過在我的腳本中實作過濾器功能來實作與我在下面的語法中撰寫的相同的結果。
我目前的腳本
let sheet = [
{ $0: { 'Name': 'Report1' } },
{ $0: { 'Name': 'Row Count' } },
{ $0: { 'Name': 'Report2' } },
{ $0: { 'Name': 'User' } }
]
let nope = ['User','Row Count','Container']
let result = []
for(let i = 0; i < sheet.length ;i ){
if(sheet[i].$0.Name != nope[0] && sheet[i].$0.Name != nope[1] && sheet[i].$0.Name != nope[2]){
result.push(sheet[i])
}
}
console.log(result)
在我的瀏覽器檢查元素上,它將(2) [{…}, {…}]在 console.log 上產生
我嘗試使用過濾功能
let result_2 = sheet.filter(w => !w.$0.Name.includes(nope[0]))
console.log(result_2)
1:我面臨的一個問題和邏輯是,我不確定如何在“includes()”中包含“nope”的所有元素
2:我將不得不對索引進行硬編碼,例如我不認為的 nope[0]如果它是一個大陣列是可取的
uj5u.com熱心網友回復:
您實際上幾乎完成了,但您反轉了w.$0.Nameand nope。
let sheet = [
{ $0: { Name: "Report1" } },
{ $0: { Name: "Row Count" } },
{ $0: { Name: "Report2" } },
{ $0: { Name: "User" } },
];
let nope = ["User", "Row Count", "Container"];
let result_2 = sheet.filter(w => !nope.includes(w.$0.Name));
console.log(result_2);
PS:我想你應該休息一下,喝點茶。:)
uj5u.com熱心網友回復:
let result_2 = sheet.filter(w => !nope.includes(w.$0.Name))
uj5u.com熱心網友回復:
一個簡單的替代解決方案是every()在filter. 像這樣:
它將為第二個陣列的每種情況檢查一個元素,如果找不到類似的,則回傳 true。
let result_2 = sheet.filter(w => nope.every(x=> x !== w.$0.Name))
console.log(result_2)
let sheet = [{
$0: {
'Name': 'Report1'
}
},
{
$0: {
'Name': 'Row Count'
}
},
{
$0: {
'Name': 'Report2'
}
},
{
$0: {
'Name': 'User'
}
}
]
let nope = ['User', 'Row Count', 'Container']
let result = []
let result_2 = sheet.filter(w => nope.every(x => x !== w.$0.Name))
console.log(result_2)
或者如果你想使用includes()你可以這樣做:
let result_3 = sheet.filter(w => !nope.includes(w.$0.Name))
console.log(result_2)
let sheet = [{
$0: {
'Name': 'Report1'
}
},
{
$0: {
'Name': 'Row Count'
}
},
{
$0: {
'Name': 'Report2'
}
},
{
$0: {
'Name': 'User'
}
}
]
let nope = ['User', 'Row Count', 'Container']
let result = []
let result_3 = sheet.filter(w => !nope.includes(w.$0.Name))
console.log(result_2)
小提琴示例
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/420863.html
標籤:
