如何在数组javascript中找到均匀的可分值?

时间:2017-12-04 13:39:54

标签: javascript arrays

听起来目标是找到每一行中只有两个数字,其中一个均分为另一个 - 也就是说,除法运算的结果是整数。他们希望你在每一行找到这些数字,除以它们,并将每一行的结果相加。

例如,给出以下电子表格:

[5,9,2,8]

[9,4,7,3]

[3,8,6,5]

在第一行中,只有两个均分的数字是8和2;这种划分的结果是4。 在第二行中,两个数字分别为9和3;结果是3。 在第三行中,结果为2。 在这个例子中,结果的总和将是4 + 3 + 2 = 9。

在下一个数组中找到均匀可分的值:

[1224,926,1380,688,845,109,118,88,1275,1306,91,796,102,1361] [1928,2097,138,1824,198,117,1532,2000,1478,539,1982]

在这种情况下如何使用for loopreduce

https://codepen.io/marinashumeyko/pen/EbreoJ?editors=1011

3 个答案:

答案 0 :(得分:3)

只需使用filter和modulo %

即可
const input =  [1224, 926, 1380, 688, 845, 109, 118, 88, 1275, 1306, 91, 796, 102, 1361]
const result = input.filter(val => val %2 === 0);
console.log(result);

自从我第一次看到这个以来,它看起来像是一些范围蔓延。如果你想在数组中的值之间进行可分,那么你可以这样做:

const input =  [1224, 926, 1380, 688, 6, 3, 845, 109, 118, 88, 1275, 1306, 91, 796, 102, 1361]
const result = input.reduce((acc, val) => {
  const divisibles = input.filter(v => val !== v && val % v === 0).map(v => val / v);
  return [...acc, ...divisibles];
}, []);
console.log(result);

您现在似乎正在使用数组数组作为输入;如果是这种情况那么你将不得不进一步嵌套上面的单个数组示例 - 但它给你的想法。

答案 1 :(得分:1)

const input =  [1224, 926, 1380, 688, 845, 109, 118, 88, 1275, 1306, 91, 796, 102, 1361];
for (i=0; i<input.length; i++) {
    for (j = i+1; j<input.length; j++) {
        if (input[i] % input[j] == 0) {
            console.log(input[i] / input[j],'\n',i,input[i],'\n',j,input[j]);
        }
        if (input[j] % input[i] ==0) {
            console.log(input[j] / input[i],'\n',i,input[i],'\n',j,input[j]);
        }
    }
}

答案 2 :(得分:0)

如果你试图在数组中找到偶数,你可以使用数组的// Declaring prometheus metric counters var ( metric_prefix = "xyz_" xyzAPICallsCounter = prometheus.NewCounterVec( prometheus.CounterOpts{ Name: metric_prefix + "api_calls_total" , Help: "Number of calls to xyz endpoint", }, []string{ // Type of api call. Present values "type", // Method can be "add", "delete", "getall", "get", "create", "ensure" "method", // Status is success or failed "status", }, ) ) func initMetrics(){ prometheus.MustRegister(xyzAPICallsCounter) http.Handle("/metrics", promhttp.Handler()) http.ListenAndServe(":8080", nil) } 方法,我们可以在这里应用func initMetrics(){ var registry = prometheus.NewRegistry() registry.MustRegister( xyzAPICallsCounter, ) http.Handle("/metrics", promhttp.HandlerFor(registry, promhttp.HandlerOpts{})) log.Fatal(http.ListenAndServe(":8080", nil)) } 的标准CS逻辑:

filter

by Modulo我们试图找出元素e是否可被2整除,如果是const newArr = [1224, 926, 1380, 688, 845, 109, 118, 88, 1275, 1306, 91, 796, 102, 1361].filter(e => e % 2 == 0) console.log(newArr) 则= 0。