javascript - JS排序对象数组,里面有数组
问题描述
我的应用程序中有一个特定列负责呈现状态。我希望能够根据该状态进行排序。
模型看起来像这样。看看下面的数据:
const data = [
{errors:undefined, warnings: undefined},
{errors:undefined, warnings: undefined},
{errors:undefined, warnings: undefined},
{errors:undefined, warnings: undefined},
{errors: ["Error1"], warnings:['Warning1']},
{errors:undefined, warnings: undefined},
{errors: undefined, warnings: ["warning2"]},
{errors: undefined, warnings: ["warning3", "Warning4"]},
{errors: ["Error1", "Error4"], warnings:undefined}
]
排序后的数据应如下所示:
带有错误和警告的 obj > 仅带有错误的 obj > 仅带有警告的 obj > 正确数据
我像这样尝试过,但经过一段时间和尝试后,我被卡住了:
const sorted = data.sort((valueA, valueB) => {
if(valueA.errors && !valueB.errors) {
return -1
} if(valueA.errors)
});
console.log(sorted)
解决方案
你可以这样做:
const data = [
{errors:undefined, warnings: undefined},
{errors:undefined, warnings: undefined},
{errors:undefined, warnings: undefined},
{errors:undefined, warnings: undefined},
{errors: ["Error1"], warnings:['Warning1']},
{errors:undefined, warnings: undefined},
{errors: undefined, warnings: ["warning2"]},
{errors: undefined, warnings: ["warning3", "Warning4"]},
{errors: ["Error1", "Error4"], warnings:undefined}
]
const result = data.sort( (a,b) => {
if(a.errors && a.warnings)
return -1
else if (b.errors && b.warnings)
return 1;
if(a.errors)
return -1
else if(b.errors)
return 1;
if(a.warnings)
return -1
else if(b.warnings)
return 1;
return 1;
})
console.log(result);
推荐阅读
- python - 如何在 Python 和 beautifulsoup 中从 CDATA 中提取数据?
- angular - Angular 2 Input ngFor 不只更新 1 个输入值
- bash - 用于参数分叉失败的 cygwin bash 选项卡完成
- javascript - 动画两个元素从垂直对齐到水平对齐
- r - 将图像映射到 R 中的矩阵到 3d 打印
- r - 正则表达式任何数字或类型后跟“.pdf”
- javascript - 使用 XMLHTTPREQUEST POST 响应重新加载页面
- android - Firestore 规则 - 权限被拒绝 - Android 访问
- ios - 在 JSON 下载 Swift 4 后从分段表视图中获取正确的索引行
- powershell - 在 powershell 中搜索文件