向自身添加数组键,直到超过限制? [英] Add an arrays keys to themselves until exceeding a limit?

查看:59
本文介绍了向自身添加数组键,直到超过限制?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

var ary = [5,10,28,50,56,280] 中,我要尝试此数组的所有组合或子集,直到超出限制为止。



我想将该限制保存在变量中,并将所有加数推入数组。



  var ary = [5,10,28,50,56,280]; var limit = 11; var result = []; var addends = []; for( var i = 0; i< = ary.length; i ++){if(ary [i]> limit){result.push(ary [i]); addends.push(ary [i]); } else if(ary [i] + ary [i]> limit){result.push(ary [i] + ary [i])addends.push(ary [i]); addends.push(ary [i]); }}  



无论数组大小或大小如何,我将如何系统地执行此操作 limit 值?

解决方案

我假设您要测试所有排列:

 函数permutator(inputArr){
var results = [];

函数置换(arr,memo){
var cur,memo = memo || [];

for(var i = 0; i cur = arr.splice(i,1);
if(arr.length === 0){
results.push(memo.concat(cur));
}
permute(arr.slice(),memo.concat(cur));
arr.splice(i,0,cur [0]);
}

返回结果;
}
return permute(inputArr);
}

var permutations = permutator([5,10,28,50,56,280]);
console.log(permutations);

鉴于此,您应该能够添加代码来处理有关限制的模糊评论。



此代码从 @delimited 处被偷走而没有羞耻: JavaScript中的排列?


In var ary = [5,10,28,50,56,280] I want to try all combinations or subsets of this array until I exceed a limit.

I want to save that limit in a variable and push all the addends into an array.

var ary = [5,10,28,50,56,280];
var limit = 11;
var result = [];
var addends = [];


for( var i = 0; i <= ary.length; i++ ){
  if( ary[ i ] > limit ){
    result.push( ary[ i ] );
    addends.push( ary[ i ] );
  }
  else if( ary[ i ] + ary[ i ] > limit ){
    result.push( ary[ i ] + ary[ i ] )
    addends.push( ary[ i ] );
    addends.push( ary[ i ] );
  }
}

How would I do this systematically regardless of array size or limit value?

解决方案

I assume you want to test all permutations:

function permutator(inputArr) {
  var results = [];

  function permute(arr, memo) {
    var cur, memo = memo || [];

    for (var i = 0; i < arr.length; i++) {
      cur = arr.splice(i, 1);
      if (arr.length === 0) {
        results.push(memo.concat(cur));
      }
      permute(arr.slice(), memo.concat(cur));
      arr.splice(i, 0, cur[0]);
    }

    return results;
  }    
  return permute(inputArr);
}

var permutations= permutator([5,10,28,50,56,280]);
console.log(permutations);

Given this, you should be able to add code to deal with your vague comment about a "limit".

This code was stolen without shame from @delimited here: Permutations in JavaScript?

这篇关于向自身添加数组键,直到超过限制?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆