- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个分层对象,我通过遍历父对象并对子对象进行排序来对子对象进行排序。这行得通。但现在,我需要有选择地打破层次结构并创建新的虚拟约束。
为了说明这一点,让我们举一个男人的例子,他有 x 个妻子。他和每个妻子都有 y 个 child 。我可以按照妻子对 child 进行排序,或者按照男人对妻子进行排序。
Man01 Wife01a Kid01aA
Kid01aB
Wife01b Kid01bC
Kid01bD
Man02 Wife02c Kid02cE
Kid02cF
Wife02d Kid02dG
Kid02dH
让我们给他们起个名字:
Murphy Winnie Kurt
Kara
Wendy Klaus
Klea
Marley Wonda Kasper
Kyra
Wilma Kevin
Karla
并考虑在它们的父级中按字母顺序对它们进行排序:
Marley Wilma Karla
Kevin
Wonda Kasper
Kyra
Murphy Wendy Klaus
Klea
Winnie Kara
Kurt
但是现在,我们希望能够对属于男人的 child 、一般的妻子或一般的 child 进行排序?
Marley Wilma Karla
Wonda Kasper
Wilma Kevin
Wonda Kyra
Murphy Winnie Kara
Wendy Klaus
Wendy Klea
Winnie Kurt
这是一个极其简化的虚构物体。实际上,我不是按字母顺序排序,而是对许多属性进行多列排序。
将结果输出到表格中很好,但处理本身已经占用了大量时间和内存。我不想进一步复杂化。
如果这没问题,我会将对象展平为数组中的一个表,将每个多列排序链接成一个 super 多列排序,然后从最近的共同祖先开始重新组合,这些祖先在循环中保持完好无损.
但我正在尝试以更有效的方式解决这个问题,而不是将对象转换为成熟的表数组。
这是我所指的对象类型的示例:对于 Object
,我的意思是,字面意义上的 {}
,尽管该对象包含 []
对象数组 {}
当它有多个成员时。
{
"men" : [
{
"name" : "Murphy",
// a lot of properties
"wifes" : [
{
"name" : "Winnie",
// a lot of properties
"kids" : [
{
"name" : "Kurt",
// a lot of properties
}, {}, {} // etc...
]
}, {}, {} // etc...
]
}, {}, {} // etc...
]
}
请注意,在这种情况下,我的示例是错误的,因为男人、妻子和 child 都是人类。但实际上有不同的对象具有不同的属性。假设有多个宇宙,我应该选择宇宙、行星、土壤或其他东西。 ;)
最佳答案
we want to be able to sort the kids that belong to a man
然后我会这样排列它们:
Marley Karla Wilma
Kasper Wonda
Kevin Wilma
Kyra Wonda
Murphy Kara Winnie
Klaus Wendy
Klea Wendy
Kurt Winnie
当然,因为每个 child 只有一个母亲,所以没有太大区别,但对于您的实际数据,这可能会有所不同。
但是,您现在已经可以看到,您只需对每个人的每个 kids
数组进行排序。
因此,一般来说,您应该先进行分组,然后再对组进行排序 - 有点像 bucket sort,而不是展平到一个大表数组、对其进行多列排序并重新分组。 .
var men = data["men"];
men.forEach(function (man) {
var kids = {};
var wifes = man["wifes"];
for (var i=0; i<wifes.length; i++) {
var wkids = wifes[i]["kids"];
for (j=0; j<wkids.length; j++) {
var id = wkids[j]["name"];
if (id in kids) {
kids[id].mothers.push(wifes[i]);
else {
kids[id] = wkids[i];
kids[id].mothers = [ wifes[i] ];
}
}
}
// if the id is the sort criteria:
man["kids"] = Object.keys(kids).sort().map(function(id) {
return kids[id];
});
// else build the array first and then sort it:
// man["kids"] = Object.values(kids).sort(function(kida, kidb) {
// <some kid comparison>
// });
// you might integrate this loop in the above, but it's independent:
man["kids"].forEach(function(kid) {
kid["mothers"].sort( /* some mother comparison */ );
})
});
// now every man has a sorted "kids" array with each kid having a sorted "mothers" array
关于javascript - 在 Javascript (Node.js) 中使用分层组对多维对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14735487/
我的数据库表是: author book repeat ------ ----
众所周知,我们可以简化 SELECT * FROM A WHERE X=1 OR X=4 OR X=9 如下: SELECT * FROM A WHERE X IN (1,4,9) “多维”条件是否有
我在大学时正在编写 Android 应用程序。 用户被询问必须回答的问题。 我通过服务器的 HTTP 请求/响应获取问题。它们以字符串形式传递。该字符串看起来像这样,有两个问题: (requested
我怎样才能在 C++ 中使用 vector 制作这样的表格: 65 A 66 B 67 C 我是用这样的动态二维数组完成的: int** ary = new int*[2]; for (int
运行时: if (data.custaccount.webaddress) { alert('found it'); } 我得到了错误 data.custaccount is undefined
如何按名称对对象数组进行排序。 数组构造数组的例子: object[] o = new object[items.Count+(row-exists)]; int i = 0;
如何创建二维 vector ?我知道在二维数组中,我可以这样表达: a[0][1]=98; a[0][2]=95; a[0][3]=99; a[0][4]=910; a[1][0]=98; a[1][
这是我的第一个问题。 我有很多组数据。它们中的每一个都应该在 DataFrame 中呈现。我试图通过将 DataFrame 作为多维元组的一项来实现这一点,例如: data[0][1].Glucose
有人可以建议改进我对多维 lstm 的实现吗? 它非常慢并且使用大量内存。 class MultiDimentionalLSTMCell(tf.nn.rnn_cell.RNNCell): """ Ad
我已为我在另一个基于 WPF 的应用程序中使用的 Azure 移动服务添加了到 MVC 站点的连接。 我不太熟悉如何通过移动服务在 MVC 中显示数据,找不到任何很好的示例来展示如何在页面上(例如在网
这样写对吗?有没有更好的写法呢?这与我正在使用的真实数据类似,我想确保将对象或数组正确嵌套在 JSON 文件中。 var data = [ { "department": "I
我有一个HashMap当我调用 .toString() 时,它看起来像这样: {somekey=false, anotherKey=someString, thirdKey={nestedKey=he
是否有更 pythonic 的方式来执行以下操作: import numpy as np def diagonal(A): (x,y,y) = A.shape diags = []
我有以下结构: import java.util.LinkedHashMap; ... LinkedHashMap level0 = new LinkedHashMap(); LinkedHashMa
如何访问 Arraylist 中的整数数组(两者均可调整大小)? 到目前为止我有这个代码: List vertices_passed = new ArrayList(); 我想进入vertices_p
我想知道 MiniZinc 语言中是否可以有(多维)数组的数组。 确实,我想解决 worker 的时间表问题。我的目标是检查它们是否每周至少有 1 天可用。每个 worker 都由一个整数索引,我每周
这个问题已经有答案了: how is axis indexed in numpy's array? (5 个回答) 已关闭 3 年前。 我还没有理解 NumPy 中多维数组中的轴之间的区别。你能给我解
我试图 $.post 包含一些表单数据以及数组中的一些其他数据。我可以将数组插入表单数据的其余部分,但我丢失了数组中的键,并且数据仅表示为字符串,我想我要求的是多维数组? 这是当前的响应字符串: ar
我是 numpy 新手,试图理解 here 中的以下示例。我无法理解的输出 >>> palette[image] 当索引数组 a 是多维时,单个索引数组引用 a 的第一个维度。以下示例通过使用调色板将
这个问题已经有答案了: JavaScript associative array to JSON (5 个回答) JSON.stringify doesn't work with normal Jav
我是一名优秀的程序员,十分优秀!