所以我有一個字符串數組 = ["ethan" , "kathrine"]
我有一個具有多個屬性的對象,但我只對這些屬性感興趣name
,並且description
例如
arr = [
{name: "ethaniel" , description: "strong" , age: 200} ,
{name: "kathrine" , description: "beautiful" , age: 220},
{name: "zack" , description: "he loves kathrine" , age: 133},
{name: "ethan" , description: "he loves kathrine" , age: 133},
{name: "bob" , description: "he loves trucks" , age: 133}
]
結果數組應該是
arr = [
{name: "ethaniel" , description: "strong" , age: 200} ,
{name: "kathrine" , description: "beautiful" , age: 220},
{name: "zack" , description: "he loves kathrine" , age: 133},
{name: "ethan" , description: "he loves kathrine" , age: 133}
]
因為他們每個人的名字或描述中都包含 ethan 或 kathrine
我的想法是這樣做
filteredArry = arr.filter(i => {return i.name.some('a') || i.description.includes('a')})
或者類似的東西
我只是不明白,如果我必須使用 some 或 contains 以及如何在 include/some 方法中包含具有關鍵字的數組的所有內容
測試數組中是否至少有一個元素通過了提供的函數實現的測試。如果在數組中找到一個元素,提供的函數為其返回真值,則返回真值;否則返回false。它不會修改數組。
執行區分大小寫的搜索以確定是否可以在另一個字符串中找到一個字符串,並根據需要返回 true 或 false。
因此,在filter
迭代,你需要檢查,如果任何的子串的或者是在與name
或description
:
const
arr = [ {name: "ethaniel" , description: "strong" , age: 200} , {name: "kathrine" , description: "beautiful" , age: 220}, {name: "zack" , description: "he loves kathrine" , age: 133}, {name: "ethan" , description: "he loves kathrine" , age: 133}, {name: "bob" , description: "he loves trucks" , age: 133} ],
subStrs = ["ethan" , "kathrine"];
const filteredArry = arr.filter(({ name, description }) =>
subStrs.some(subStr => name.includes(subStr) || description.includes(subStr))
);
console.log(filteredArry);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句