[英]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.