首页 > 解决方案 > 当 if 条件满足时,数组总和和中断的数组

问题描述

我有一个这样的js数组。

const test_arr = [ [ 20, 7, 23, 19, 10, 15, 25 ],
 [ 20, 7, 23, 19, 10, 15, 8 ],
  [ 20, 7, 23, 19, 10, 15, 13 ],
  [ 20, 7, 23, 19, 10, 25, 8 ],
  [ 20, 7, 23, 19, 10, 25, 13 ],
  [ 20, 7, 23, 19, 10, 8, 13 ],
  [ 20, 7, 23, 19, 15, 25, 8 ],
  [ 20, 7, 23, 19, 15, 25, 13 ],
  [ 20, 7, 23, 19, 15, 8, 13 ],
  [ 20, 7, 23, 19, 25, 8, 13 ],
  [ 20, 7, 23, 10, 15, 25, 8 ],
  [ 20, 7, 23, 10, 15, 25, 13 ],
  [ 20, 7, 23, 10, 15, 8, 13 ],
  [ 20, 7, 23, 10, 25, 8, 13 ],
  [ 20, 7, 23, 15, 25, 8, 13 ],
  [ 20, 7, 19, 10, 15, 25, 8 ],
  [ 20, 7, 19, 10, 15, 25, 13 ],
  [ 20, 7, 19, 10, 15, 8, 13 ],
  [ 20, 7, 19, 10, 25, 8, 13 ],
  [ 20, 7, 19, 15, 25, 8, 13 ],
  [ 20, 7, 10, 15, 25, 8, 13 ],
  [ 20, 23, 19, 10, 15, 25, 8 ],
  [ 20, 23, 19, 10, 15, 25, 13 ],
  [ 20, 23, 19, 10, 15, 8, 13 ],
  [ 20, 23, 19, 10, 25, 8, 13 ],
  [ 20, 23, 19, 15, 25, 8, 13 ],
  [ 20, 23, 10, 15, 25, 8, 13 ],
  [ 20, 19, 10, 15, 25, 8, 13 ],
  [ 7, 23, 19, 10, 15, 25, 8 ],
  [ 7, 23, 19, 10, 15, 25, 13 ],
  [ 7, 23, 19, 10, 15, 8, 13 ],
  [ 7, 23, 19, 10, 25, 8, 13 ],
  [ 7, 23, 19, 15, 25, 8, 13 ],
  [ 7, 23, 10, 15, 25, 8, 13 ],
  [ 7, 19, 10, 15, 25, 8, 13 ],
  [ 23, 19, 10, 15, 25, 8, 13 ] ]

var combination_before = [ 20,7,23, 19, 10, 15, 25, 8, 13 ]; 这些是从九个中选择七个的结果。

我只想在元素总和为 100 时返回一些元素。

如果条件,我如何制作减速器?

标签: javascriptarraysif-statementreducers

解决方案


你可以filter用来过滤你的数组和reduce嵌套数组的总和,并检查你的过滤器哪个数组总和等于 100

const test_arr = [ [ 20, 7, 23, 19, 10, 15, 25 ],
 [ 20, 7, 23, 19, 10, 15, 8 ],
  [ 20, 7, 23, 19, 10, 15, 13 ],
  [ 20, 7, 23, 19, 10, 25, 8 ],
  [ 20, 7, 23, 19, 10, 25, 13 ],
  [ 20, 7, 23, 19, 10, 8, 13 ],
  [ 20, 7, 23, 19, 15, 25, 8 ],
  [ 20, 7, 23, 19, 15, 25, 13 ],
  [ 20, 7, 23, 19, 15, 8, 13 ],
  [ 20, 7, 23, 19, 25, 8, 13 ],
  [ 20, 7, 23, 10, 15, 25, 8 ],
  [ 20, 7, 23, 10, 15, 25, 13 ],
  [ 20, 7, 23, 10, 15, 8, 13 ],
  [ 20, 7, 23, 10, 25, 8, 13 ],
  [ 20, 7, 23, 15, 25, 8, 13 ],
  [ 20, 7, 19, 10, 15, 25, 8 ],
  [ 20, 7, 19, 10, 15, 25, 13 ],
  [ 20, 7, 19, 10, 15, 8, 13 ],
  [ 20, 7, 19, 10, 25, 8, 13 ],
  [ 20, 7, 19, 15, 25, 8, 13 ],
  [ 20, 7, 10, 15, 25, 8, 13 ],
  [ 20, 23, 19, 10, 15, 25, 8 ],
  [ 20, 23, 19, 10, 15, 25, 13 ],
  [ 20, 23, 19, 10, 15, 8, 13 ],
  [ 20, 23, 19, 10, 25, 8, 13 ],
  [ 20, 23, 19, 15, 25, 8, 13 ],
  [ 20, 23, 10, 15, 25, 8, 13 ],
  [ 20, 19, 10, 15, 25, 8, 13 ],
  [ 7, 23, 19, 10, 15, 25, 8 ],
  [ 7, 23, 19, 10, 15, 25, 13 ],
  [ 7, 23, 19, 10, 15, 8, 13 ],
  [ 7, 23, 19, 10, 25, 8, 13 ],
  [ 7, 23, 19, 15, 25, 8, 13 ],
  [ 7, 23, 10, 15, 25, 8, 13 ],
  [ 7, 19, 10, 15, 25, 8, 13 ],
  [ 23, 19, 10, 15, 25, 8, 13 ] ];
  
  const result =  test_arr.filter(arr => arr.reduce((a, b) => a + b, 0) == 100);
  
  console.log(result);


推荐阅读