簡體   English   中英

如何根據 javascript 中 object 的值獲取 object 數組

[英]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 應該根據搜索條件返回truefalse

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM