簡體   English   中英

從包含特定值的對象的多維數組返回數組對象

[英]Return array object from a multi-dimensional array of objects that contains a specific Value

我正在嘗試創建一個功能類似於搜索機制的函數,該函數遍歷對象數組並返回包含此數組中特定值(搜索參數)的特定數組對象

var jobs= [
  {
    "startDate": "5/2017",
    "endDate": null,
    "isCurrent": true,
    "seniority": "Senior",
  },
  {
    "startDate": "5/2013",
    "endDate": "5/2019",
    "isCurrent": false,
    "seniority": "Junior",
  },
]

我想創建一個函數,在其中提供數組,數組鍵和數組值,即

nameOfFunction(jobs,"seniority","Senior")

它返回/日志

{"startDate": "5/2017","endDate": null,"isCurrent": true,"seniority": "Senior",},

數組的filter方法可以做到這一點,但是如果要包裝它,則可以執行以下操作...

 var jobs= [ { "startDate": "5/2017", "endDate": null, "isCurrent": true, "seniority": "Senior", }, { "startDate": "5/2013", "endDate": "5/2019", "isCurrent": false, "seniority": "Junior", }, ] const nameOfFunction = (ar, key, val) => ar.filter(obj=>obj[key]===val); var results = nameOfFunction(jobs,"seniority","Senior") console.log(results); 

您可以使用filter

 var jobs= [ { "startDate": "5/2017", "endDate": null, "isCurrent": true, "seniority": "Senior", }, { "startDate": "5/2013", "endDate": "5/2019", "isCurrent": false, "seniority": "Junior", }, ] const findObject = (obj, prop, value) => obj.filter(obj => obj[prop] === value) console.log(findObject(jobs, 'seniority', 'Senior')) 

編輯:

 var jobs= [ { "startDate": "5/2017", "endDate": null, "isCurrent": true, "seniority": "Senior", }, { "startDate": "5/2013", "endDate": "5/2019", "isCurrent": false, "seniority": "Junior", }, ] const findObject = (obj, prop, value, key) => obj.filter(obj => obj[prop] === value).map(obj => obj[key]) console.log(findObject(jobs, 'seniority', 'Senior', 'startDate')) 

您可以在傳入的數組中使用filter方法。 在這里,我還使用了分解分配,以從傳入的key中獲取當前對象的值( v )。 然后,我將對象( v )的值與傳遞給函數的val進行比較,以查看是否應將其保留在新數組中。

請參見下面的示例:

 const jobs= [ { "startDate": "5/2017", "endDate": null, "isCurrent": true, "seniority": "Senior", }, { "startDate": "5/2013", "endDate": "5/2019", "isCurrent": false, "seniority": "Junior", }, ]; const filterArr = (arr, key, val) => arr.filter(({[key]:v}) => v===val); console.log(filterArr(jobs, "seniority", "Senior")); 

您可以嘗試一下,

 var jobs= [ { "startDate": "5/2017", "endDate": null, "isCurrent": true, "seniority": "Senior", }, { "startDate": "5/2013", "endDate": "5/2019", "isCurrent": false, "seniority": "Junior", }, ]; // This function will return array of filtered elements function searchArray(array,propertyKey,propertyValue){ return array.filter(function(a){ return a[propertyKey] === propertyValue; }); } console.log(searchArray(jobs, 'seniority', 'Senior')); // With new way function searchArrayNewMethod(array,propertyKey,propertyValue){ return array.filter( a => a[propertyKey] === propertyValue); } console.log(searchArrayNewMethod(jobs, 'seniority', 'Senior')); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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