Javascript 数组浏览和比较

标签 javascript

我需要浏览和比较两个数组并得到以下结果: 例如:

T = [5,10,15];
V = [15,50,30];

我需要返回以下值:

V[0]-T[0] = 15-5 = 10
V[1]-T[0] = 50-5 = 45
V[2]-T[0] = 30-5 = 25

三个值的最大值=45

V[0]-T[1] = 15-10 = 5
V[1]-T[1] = 50-10 = 40
V[2]-T[1] = 30-10 = 20

三个值的最大值=40

V[0]-T[2] = 15-15 = 0
V[1]-T[2] = 50-15 = 35
V[2]-T[2] = 30-15 = 15

三个值的最大值=35

我试着用这段代码自己做:

var T = [5,10,15];
var V = [15,50,30];
var X;
for (var i = 0; i < T.length; ++i){
    for (var j = 0; j <  V.length; ++j)
	{
		X = V[j]-T[i];  	
		console.log(V[j]-T[i]); 
	}
	if ((V[j]-T[i]) >= X)
	{
		X = V[j]-T[i];
		console.log(V[j]-T[i]);
	}
    else
    {
        console.log(X); 
	}		  
	console.log('\n');
}

但我得到以下结果:

10
45
25
25
5
40
20
20
0
35
15
15

最佳答案

您可以映射 t 并取减法映射值的最大值。

该提案的特点是 Array#maparrow functionsMath.maxspread syntax ...用于将其作为参数的数组。

var  t = [5, 10, 15],
     v = [15, 50, 30],
     max = t.map(tt => Math.max(...v.map(vv => vv - tt)));

console.log(max);

ES5

var  t = [5, 10, 15],
     v = [15, 50, 30],
     i, j,
     max,
     result = [];

for (i = 0; i < t.length; i++) {
    max = v[0] - t[i];                    // take the first value of v
    for (j = 1; j < v.length; j++) {      // iterate from the second value of v
       max = Math.max(max, v[j] - t[i]);  // get max value
    }
    result.push(max);                     // store max
}

console.log(result);

关于Javascript 数组浏览和比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48171141/

相关文章:

javascript - Ember js - 更新其他表后,Hasmany 关系中断

javascript - 检查复选框是否被选中时出现问题

javascript - ES6 (AngularJS) 服务

javascript - Ember - 使用 JSON 字段自动保存

javascript - 自定义 jQuery 验证规则无法正常工作

javascript - 如何在 Javascript 中实现随机图像?

javascript - 我正在尝试使用 css 高度栏通过排序数字更新 DOM

javascript - 回调队列(调试器)里面有什么?

javascript - 如何计算HTML页面中文本框的数量并将其存储在html标签中,以便可以在另一个Servlet页面中使用?

javascript - 在 AngularJS 中使用 ng-jsoneditor 的 JSON 奇怪 View