【发布时间】:2020-01-06 08:26:51
【问题描述】:
假设我有一个包含 n 个元素的数据结构和一个函数check(element1, element2),它对两个元素执行某种检查。我需要检查所有可能的元素对。使用组合很容易推断出我们需要精确地执行“n 选择 2”二项式系数迭代(n*(n-1)/2 迭代)
所以如果我的数据结构是一个数组,下面的嵌套循环会起作用:
for(let i = 0; i < elements.length; i++) {
for(let j = i + 1; j < elements.length; j++) {
check(elements[i], elements[j]);
}
}
这样,我们检查第一个元素和所有其他元素,第二个元素检查元素 3 到 n(因为我们已经检查了第一个元素),第三个元素检查元素 4 到 n,依此类推。但是,如果“元素”是一个 JSON,其中每个元素的键不是整数,我们如何实现这种效果?显然,我们可以确保使用以下代码执行所有检查:
for(var key1 in elements) {
for(var key2 in elements) {
if(key1 != key2) {
check(elements[key1], elements[key2]);
}
}
}
但显然我们不止一次地进行了大量检查,导致 n^2 次迭代。
我可以使用什么方法来获得与数组示例中相同的结果?
【问题讨论】:
-
如果不是字符串,它就是 not JSON。 What is the difference between JSON and Object Literal Notation?
-
不应将
check(elements[key1], elements[key1]);设为check(elements[key1], elements[key2]);(注意key2) -
正确;修好了
标签: javascript json loops object