簡體   English   中英

如何通過其屬性之一檢索數組中的對象?

[英]How to retrieve an object in an array by one of its property?

在Javascript中,如何通過其屬性之一檢索數組中的對象?

大家好,我們假設我們具有以下內容:

   "Attributes":[
       {
           "Name":"Brief",
           "Value":"This skirt was fabriced from ...."
       },
       {
           "Name":"Details",
           "Value":"Measurements and Pictures are real"
       },
       {
           "Name":"SKUNumber",
           "Value":"12345678"
       }
   ]

我需要做的是基於“名稱”獲取“值”的值。

例如 :

console.log(Attributes.Brief)   ==> "This skirt was fabriced from ...."

所以我需要一個函數來幫助做到這一點

請注意,我不想使用對象的索引,因為它的順序可能會更改。

謝謝

好吧,總是展示自己嘗試過的事情總比問好要好。

您可以使用Array.find實現此目的

 let Attributes = [ { "Name":"Brief", "Value":"This skirt was fabriced from ...." }, { "Name":"Details", "Value":"Measurements and Pictures are real" }, { "Name":"SKUNumber", "Value":"12345678" } ] function getValueByName(name) { return Attributes.find(d => d.Name.toLowerCase() == name.toLowerCase()).Value } console.log(getValueByName('Brief')) console.log(getValueByName('details')) console.log(getValueByName('SKUNumber')) 

您擁有的一種選擇是使用Array.prototype.filter

 const d = [{ "Name": "Brief", "Value": "This skirt was fabriced from ...." }, { "Name": "Details", "Value": "Measurements and Pictures are real" }, { "Name": "SKUNumber", "Value": "12345678" } ] console.log(d.filter(x=>x.Name==="Brief")[0].Value) 

您還可以使其更通用:

 const d = [{ "Name": "Brief", "Value": "This skirt was fabriced from ...." }, { "Name": "Details", "Value": "Measurements and Pictures are real" }, { "Name": "SKUNumber", "Value": "12345678" } ] const getValOfXfromArrByValOfY = (arr, x, y, val) => arr.find(z => z[y] === val)[x] console.log(getValOfXfromArrByValOfY(d, 'Value', 'Name', 'SKUNumber')) 

您可以使用帶有getter的Proxy作為密鑰,該Proxy返回帶有值的對象的查找。

 var object = { attributes: [{ Name: "Brief", Value: "This skirt was fabriced from ...." }, { Name: "Details", Value: "Measurements and Pictures are real" }, { Name: "SKUNumber", Value: "12345678" }] }, attributes = new Proxy( object.attributes, { get: (array, prop) => (array.find(({ Name }) => Name === prop) || {}).Value } ); console.log(attributes.Brief); console.log(attributes.SKUNumber); 

您可以使用javascript查找功能,請參見https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find參見以下示例代碼:

 var Attributes =[
               {
                   "Name":"Brief",
                   "Value":"This skirt was fabriced from ...."
               },
               {
                   "Name":"Details",
                   "Value":"Measurements and Pictures are real"
               },
               {
                   "Name":"SKUNumber",
                   "Value":"12345678"
               }
           ]

            var found = Attributes.find(function(element) {
              return element.Name == "Details";
            });

console.log(found.Value); //output : Measurements and Pictures are real

暫無
暫無

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

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