我使用api返回一个对象'结果'。结果' object包含具有类型文章或细节的其他对象。
结果(文章或细节)中的每一个都包含自己的对象结果,其中包含该类型的不同页面。
我想做什么:将结果存储在数组'页面'我首先通过所有文章订购它们然后所有细节
我想在数组中对它们进行排序,因为我需要先显示文章,然后再显示前端的详细信息页面。
var pages = [];
_.find(results, function(r) {
if(r.type === 'article') {
_.forEach(r.results, function(p) {
p.type = 'article';
pages.push(r);
});
} else if(r.app === 'detail') {
_.forEach(r.results, function(p) {
p.type = 'detail';
pages.push(p);
});
}
});
这是我在Lodash找到的尝试,但在前端我仍然有结果,其中的细节显示在文章之后。
注意:api结果可以是这样的:{detail},{article},但也喜欢这个{detail},{article},{detail},{article}
示例数据:
results: [
{
type: 'article',
results: {
{
title: '',
body: '',
...
},
...
}
},
{
type: 'detail',
results: {
{
title: '',
body: '',
...
},
...
}
},
...
]
答案 0 :(得分:1)
经过长时间的讨论:
var sorted;
var articles = [];
var details = [];
var source = [{
app: "article",
results: [
{ title: "a" },
{ title: "b" },
{ title: "c" }
]
}, {
app: "detail",
results: [
{ title: "d" },
{ title: "e" },
{ title: "f" }
]
}, {
app: "article",
results: [
{ title: "g" },
{ title: "h" },
{ title: "i" }
]
}];
for (var i = 0; i < source.length; i++) {
switch (source[i].app) {
case "article": articles = articles.concat(source[i].results); break;
case "detail": details = details.concat(source[i].results); break;
}
}
sorted = articles.concat(details);
console.log("articles =", JSON.stringify(articles));
console.log("details =", JSON.stringify(details));
console.log("sorted =", JSON.stringify(sorted));
console.log("source =", JSON.stringify(source));
&#13;