你好javascript英雄。我被這個問題困擾了很長時間。問題是我正在使用物件作為搜索關鍵字也使用過濾器方法在物件內部進行搜索。 像這樣
let data = [
{
name:"Jade",
role:"admin",
pass:"0000"
},
{
name:"Jon",
role:"user",
pass:"0000"
},
{
name:"Adam",
role:"user",
pass:"0000"
},
]
let result = data.filter((item)=>{
return {role:"user",pass:"0000"} in item
})
我也試過
let result = data.filter((item)=>{
return {role:"user",pass:"0000"} in {...item}
})
它總是回傳一個空陣列。
請讓我知道是否有任何方法可以解決這個問題
uj5u.com熱心網友回復:
您不能簡單地使用“in”運算子比較物件。您可以迭代整個物件并匹配值。或者簡單地匹配物件中的所有值。
**樣本 **
let data = [
{
name: "Jade",
role: "admin",
pass: "0000",
},
{
name: "Jon",
role: "user",
pass: "0000",
},
{
name: "Adam",
role: "user",
pass: "0000",
},
];
//1: Matching whole object
const isEqual = (user, item) => {
return Object.entries(user).every(([key, value]) => item[key] === value);
};
let result = data.filter((item) => {
return isEqual({ role: "user", pass: "0000" }, item);
});
console.log(result);
// 2: Matching values
const isEqua2 = (user, item) =>
user.role === item.role && user.pass === item.pass;
let result2 = data.filter((item) => {
return isEqua2({ role: "user", pass: "0000" }, item);
});
console.log(result2);
uj5u.com熱心網友回復:
你可以在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes上閱讀你可以做的例子,如果 statment of sort
uj5u.com熱心網友回復:
這樣做:
let result = data.filter((item)=>{
return item.role == "user" && item.pass == "0000";
})
uj5u.com熱心網友回復:
我認為您可以使用真/假來掩蓋這種情況,正如您的標題所說的檢查資料中是否存在物件。
function check(obj, data) {
for (let i = 0; i < data.length; i ) {
if (obj.name === data[i].name) {
return true;
}
}
return false;
}
如果你嘗試
console.log(check({ name: 'Jade', role: 'admin', pass: '0000' }, data));
會回來true。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/369916.html
標籤:javascript 反应 目的
上一篇:如何將字串分成496行并根據javascript中的標題細分它們
下一篇:如何捕獲嵌套物件中的元素?
