[英]How to get the object array based on value of object in javascript
我想知道如何根據 javascript 中匹配的值獲取 object 數組列表
如果任何 object 值與參數匹配,則在 javascript 中返回該數組。
var objarr = [
{id:1, email: 'xyz@gmail.com', value: 10, name: 'ram'},
{id:2, email: 'xyz@gmail.com', value: 20, name: 'Tom'},
{id:3, email: 'ss@gmail.com', value: 30, name: 'Lucas'},
{id:4, email: 'ct@gmail.com', value: 40, name: 'Chris'},
{id:5, email: 'tam@gmail.com', value: 30, name: 'Lucas Tim'}
]
function getList(val){
var result=[];
var checkdata = objarr.filter(e=>{
if(Object.values(e)===val){
result.push(e);
}
return result;
})
}
console.log(result);
Expected Output:
getList('xyz@gmail.com');
scenario 1:
[
{id:1, email: 'xyz@gmail.com', value: 10, name: 'ram'},
{id:2, email: 'xyz@gmail.com', value: 20, name: 'Tom'}
]
scenario 2:
getList('Chris');
[
{id:4, email: 'ct@gmail.com', value: 40, name: 'Chris'}
]
您的Array.filter
function 應該根據搜索條件返回true
或false
。
Object.values
返回一個數組作為 output。 要檢查一個值是否在數組中,可以使用Array.includes
。
您應該使用Object.values(e).includes(val)
檢查值
工作小提琴
var objarr = [ { id: 1, email: 'xyz@gmail.com', value: 10, name: 'ram' }, { id: 2, email: 'xyz@gmail.com', value: 20, name: 'Tom' }, { id: 3, email: 'ss@gmail.com', value: 30, name: 'Lucas' }, { id: 4, email: 'ct@gmail.com', value: 40, name: 'Chris' }, { id: 5, email: 'tam@gmail.com', value: 30, name: 'Lucas Tim' } ] function getList(val) { var checkdata = objarr.filter(e => { if (Object.values(e).includes(val)) { return true; } return false; }) return checkdata; } console.log(getList('xyz@gmail.com')); console.log(getList('Chris'));
簡化版
var objarr = [ { id: 1, email: 'xyz@gmail.com', value: 10, name: 'ram' }, { id: 2, email: 'xyz@gmail.com', value: 20, name: 'Tom' }, { id: 3, email: 'ss@gmail.com', value: 30, name: 'Lucas' }, { id: 4, email: 'ct@gmail.com', value: 40, name: 'Chris' }, { id: 5, email: 'tam@gmail.com', value: 30, name: 'Lucas Tim' } ] const getList = (val) => objarr.filter(e => Object.values(e).includes(val)) console.log(getList('xyz@gmail.com')); console.log(getList('Chris'));
您可以使用filter
並使用Object.values
來獲取 object 的所有值,然后使用some
來獲得所需的結果。
ONE LINER
objarr.filter((o) => Object.values(o).some((v) => v === val));
var objarr = [ { id: 1, email: "xyz@gmail.com", value: 10, name: "ram" }, { id: 2, email: "xyz@gmail.com", value: 20, name: "Tom" }, { id: 3, email: "ss@gmail.com", value: 30, name: "Lucas" }, { id: 4, email: "ct@gmail.com", value: 40, name: "Chris" }, { id: 5, email: "tam@gmail.com", value: 30, name: "Lucas Tim" }, ]; const getList = val => objarr.filter((o) => Object.values(o).some(v => v === val)); console.log(getList("xyz@gmail.com")); console.log(getList("Chris"));
/* This is not a part of answer. It is just to give the output full height. So IGNORE IT */.as-console-wrapper { max-height: 100%;important: top; 0; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.