【发布时间】:2011-11-03 08:47:16
【问题描述】:
var items = [
{"id": 1, "begin":10, "end":30},
{"id": 2, "begin":20, "end":40},
{"id": 3, "begin":30, "end":50},
{"id": 4, "begin":40, "end":60},
{"id": 5, "begin":50, "end":70},
{"id": 6, "begin":100, "end":170},
{"id": 7, "begin":120, "end":180}
];
for (var i = 0; i < items.length; i++) {
var currBegin = items[i].begin;
var currEnd = items[i].end;
var out = [];
for (var j = 0; j < items.length; j++) {
var innerBegin = items[j].begin;
var innerEnd = items[j].end;
if (innerBegin < currBegin && innerEnd < currEnd && innerEnd >= currBegin)
out.push(items[j].id);
}
console.log(out)
}
我正在尝试根据初始数字和结束数字检查数字是否相互重叠。 到目前为止,我的代码给出了错误的输出:http://jsfiddle.net/bZzSV/
[]
[1]
[1, 2]
[2, 3]
[3, 4]
[]
[6]
基本上检查一个元素是否与另一个重叠。 1,2 重叠,但 1,3 不重叠,但 2,3 确实……最后,由于这些链接,1-5 重叠。
我想输出:
[1, 2, 3, 4, 5]
[6, 7]
感谢任何帮助!
【问题讨论】:
-
简化你的逻辑。你真的需要 2 个
for循环还是检查相邻元素就足够了? -
我听不懂你的问题,不明白你想做什么?
-
@Matt Ball:一个循环会更好,但还不知道怎么做。
-
@Fatih:基本上检查一个元素是否与另一个重叠。 1-2 重叠,但 1-3 不重叠,但 2-3 确实...最后,1-5 是这些链接的重叠原因。
标签: javascript arrays