[英]Select a prop of an object with arrays
所以,我有這些數據來自 JSON 中的 REST API。 我在這里舉個例子。
var JsonCategoriaHot = {
"products": [
{"id": 8,
"id_manufacturer": "0",
"manufacturer_name": "Fashion Manufacturer",
"id_supplier": "0",
"id_category_default": "Isso terá de ser uma URL ou um nome",
"new": "null",
"images": "ur.presta.com",
"name": [{"id": "1", "value": "Printed Summer Dress"},
{"id": "2", "value": "Vestido estampado de verão"}],
"description": [{"id":"1","value":"Ensaio do Muzenza"}],},
{"id":1}, // just empty data to represent "something"
{"id":2},
{"id":3},
{"id":4},
{"id":5},
{"id":9,
"name": "Michel Conrado",
"images": "ur.presta.com/michelconrado",
"manufacturer_name": "Muzenza",
"category_default": "mudar de cat_default para url",
"description": "Essa é uma descrição"
},
{"id":12,
"name": "12 Michel Conrado",
"images": "ur.presta.com/michelconrado",
"manufacturer_name": "Muzenza",
"category_default": "mudar de cat_default para url",
"description": "Essa é uma descrição"
}
]
};
所以從這個數據我想映射一些對象。 並更改一些字符串名稱。 使用以下代碼:
var idparaurl = JsonCategoriaHot.products.map(function(products,i) {
return {
index: i + 1,
name: products.name,
image: products.images,
fabricante: products.manufacturer_name,
catgdf: products.id_category_default,
desc: products.description,
};
});
現在我需要“選擇”屬性“名稱”,為這種情況選擇默認 id 將是“產品”>“名稱”> ID> 2>值>字符串。
這就像“減少”並從“名稱”數組中選擇一個值。
也許將來會支持更多的語言。 因此,每個 ID 代表我的 CMS 對每種相應語言的翻譯。
它應該返回(對於每個對象 - 所有映射的數據都會像這樣):
[
{
"catgdf": "Isso terá de ser uma URL ou um nome tidpo Muzenza",
"image": "ur.presta.com",
"index": 1,
"name": "Vestido estampado de verão",
"desc": [
{
"id": "1",
"value": "Ensaio do Muzenza"
}
],
"fabricante": "Fashion Manufacturer"
}
//...
]
“描述”數組我也將應用這個解決方案,所以我在 obj 中應該是這樣的:
//...
"desc": "Ensaio do Muzenza"
}
我建議使用filter
操作而不是使用reduce
。
這是一個可以工作的函數:
function parseArrayKeyIndexValue(valArray, id) {
if (!(valArray instanceof Array)) {
return valArray;
}
return valArray.filter(function(valArrayItem){
if (valArrayItem.id === id) {
return true;
}
})[0].value;
}
您示例中的地圖如下所示:
var idparaurl = JsonCategoriaHot.products.map(function(products,i) {
return {
index: i + 1,
name: parseArrayKeyIndexValue(products.name, "2"),
image: products.images,
fabricante: products.manufacturer_name,
catgdf: products.id_category_default,
desc: parseArrayKeyIndexValue(products.description, "1"),
};
});
該代碼可以使用您在此 jsbin 中提供的“JsonCategoriaHot”示例數據運行: http ://jsbin.com/zapimineje/edit?js,console,output
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.