gpt4 book ai didi

javascript - 对象索引逐渐增长的数组数组

转载 作者:行者123 更新时间:2023-11-28 01:30:17 24 4
gpt4 key购买 nike

简化版

对于...

ar = [
{"element":"a","index":0},
{"element":"b","index":1},
{"element":"e","index":4},
{"element":"d","index":3}
];

应该返回...

 ans = [[
{"element":"a","index":0},
{"element":"b","index":1},
{"element":"e","index":4}],

[{"element":"a","index":0},
{"element":"b","index":1},
{"element":"d","index":3}]
];

它可以返回仅包含 {"element":"e","index":4} 和 {"element":"d","index":3} 的数组,因为它后面没有任何内容,但它是没有必要。

原创我有这个元素数组...

ar = [
{"element":"c","index":2},
{"element":"a","index":0},
{"element":"b","index":1},
{"element":"e","index":4},
{"element":"d","index":3}
];

我想返回一个数组,其中包含每个对象的“索引”逐渐增长的序列,并且具有 obj1[index] < nextobj[index] 的最大对象数。 .

即它应该返回..

[
[{"element":"c","index":2}, {"element":"e","index":4}],
[{"element":"c","index":2}, {"element":"d","index":3}],
[{"element":"a","index":0}, {"element":"b","index":1}, {"element":"d","index":3}],
[{"element":"a","index":0}, {"element":"b","index":1}, {"element":"e","index":4}]
[{"element":"d","index":3}],
[{"element":"e","index":4}]
]

我尝试过使用 ar.reduce,但不太熟悉它,也不知道它是否适合这个实例。

最佳答案

不确定为什么这些没有在您的示例中列出

[{ element="a", index=0}, { element="e", index=4}]
[{ element="a", index=0}, { element="d", index=3}]
[{ element="b", index=1}, { element="e", index=4}]
[{ element="b", index=1}, { element="d", index=3}]

但是这可以产生接近的结果

var ar = [
{"element":"c","index":2},
{"element":"a","index":0},
{"element":"b","index":1},
{"element":"e","index":4},
{"element":"d","index":3}
];

var results = [];

traverse([], 0);

function traverse(r, startIdx)
{
if (startIdx >= ar.length){
console.log(r);
return;
}

for (var i = startIdx; i < ar.length ; i++){
if ((startIdx == 0) || (r[r.length - 1].index) <= ar[i].index) {
rCopy = r.slice(0);
rCopy.push(ar[i]);

traverse(rCopy, i + 1);
}
else if (r.length > 0) {
console.log(r);
}
}
}

JSFiddle1 , JSFiddle2

var ar = [
{"element":"c","index":2},
{"element":"a","index":0},
{"element":"b","index":1},
{"element":"e","index":4},
{"element":"d","index":3}
];

var results = [];

traverse([], 0);
collapse(results);

//console.log(results);

for (var i = results.length - 1; i >= 0; i--) {
console.log(results[i]);
}

function traverse(r, startIdx) {
if (startIdx >= ar.length) {
results.push(r);
return;
}

for (var i = startIdx; i < ar.length ; i++) {
if ((startIdx == 0) || (r[r.length - 1].index) <= ar[i].index) {
rCopy = r.slice(0);
rCopy.push(ar[i]);

traverse(rCopy, i + 1);
}
else if (r.length > 0) {
results.push(r);
}
}
}

function collapse() {
for (var i = results.length - 1; i >= 0; i--) {
for (var j = results.length - 1; j >= 0; j--) {
if ((i !== j) && (contains(results[i], results[j]))) {
results[i].remove = true;
}
}
}

for (var i = results.length - 1; i >= 0; i--) {
if (results[i].remove) {
results.splice(i, 1);
}
}
}

// Checks if set1 is contained within set2
function contains(set1, set2) {
for (var i = 0; i < set1.length; i++) {
var found = false;

for (var j = 0; j < set2.length; j++) {
if (set1[i].index === set2[j].index) {
found = true;
break;
}
}

if (!found) {
return false;
}
}

return true;
}

JSFiddle3

关于javascript - 对象索引逐渐增长的数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22212315/

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