gpt4 book ai didi

javascript - 查找对象中 3 个键的所有组合

转载 作者:行者123 更新时间:2023-12-02 20:15:50 25 4
gpt4 key购买 nike

给定一个具有 n 个键的对象,需要找到每 3 个键的所有组合(数学中的 nC3)

这是最有效的方法吗?

var x = {};  // object

x['00'] = [1, 7, 9];
x['01'] = [1, 9];
x['02'] = [6, 8];
x['03'] = [1, 7];
x['04'] = [1, 5, 8];
x['05'] = [4, 6, 8, 9];

var triples = [],
c = [0,0,0]; // counter. keep track of the indexes when looping over objects

for(var i in x){
c[0]++;
c[1] = 0;

for(var j in x){ // loop to compare this x[i] array to all other arrays
c[1]++;
if( c[1] < c[0]+1 ) continue;
c[2] = 0;

for(var k in x){
c[2]++;
if( c[2] < c[1]+1 ) continue;

triples.push( [i,j,k] );
}
}
}

console.dir(triples);

最佳答案

据我猜测,您最好的选择是迭代键,然后基于此进行推送。通过这种方式,您可以避免基本上相当于一长串字符串查找的操作——这是 JS 通常擅长的事情,但速度不如简单的数字迭代。

它会是这样的:

var keys = []
for( var it in x ) keys.push(it);

var triples = []
var len = keys.length; //cache the value.
for( var i = 0; i < len; i++ )
for( var j = i + 1; j < len; j++ )
for( var k = j + 1; k < len; k++ )
triples.push( [ keys[ i ], keys[ j ], keys[ k ] ] );

关于javascript - 查找对象中 3 个键的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6319172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com