2 回答
TA贡献1775条经验 获得超8个赞
您的目标数据模型似乎有点不理想,因为您有一个具有唯一 id 的数组,作为以 id 作为键的对象,它的性能可能更高,但您也可以使用数据模型:
var data = [
{
id: 14,
language: "english",
title: "I am a new article",
bodyText: "Article Content",
lang: "eng",
keywords: ["key1", "key2"]
},
{
id: 1,
language: "greeks",
title: "Ειμαι ενα καινουρειο αρθρο",
bodyText: "Κυριο μερος Αρθρου",
lang: "gr",
keywords: ["key1", "key2"]
},
{
id: 1,
language: "espanol",
title: "Soy un nuevo articulo",
bodyText: "Soy un nuevo articulo",
lang: "es",
keywords: ["key1", "key2"]
}
];
console.log(data.reduce(function(result, entry) {
var id_index = result.map(function(e) { return e.id; }).indexOf(entry.id);
var id_element;
if (id_index === -1) {
id_element = {id: entry.id, language: {}};
} else {
id_element = result[id_index];
}
id_element.language[entry.lang] = {
title: entry.title,
bodyText: entry.bodyText
};
if (id_index === -1) {
result.push(id_element);
}
return result;
}, []))
TA贡献1111条经验 获得超0个赞
您可以解构属性并稍后使用哈希表中的值。
主要部分是获取具有language属性的初始对象。
var data = [{ id: 14, language: "english", title: "I am a new article", bodyText: "Article Content", lang: "eng", keywords: ["key1", "key2"] }, { id: 1, language: "greeks", title: "Ειμαι ενα καινουρειο αρθρο", bodyText: "Κυριο μερος Αρθρου", lang: "gr", keywords: ["key1", "key2"] }, { id: 1, language: "espanol", title: "Soy un nuevo articulo", bodyText: "Soy un nuevo articulo", lang: "es", keywords: ["key1", "key2"] }],
result = data.reduce((c, { id, lang, title, bodyText, keywords }) => {
c[id] = c[id] || { id, language: {} };
c[id].language[lang] = { title, bodyText, keywords };
return c;
}, {}),
array = Object.values(result);
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
添加回答
举报