合并两个数组时检查哪个元素更大?

时间:2017-10-22 00:44:50

标签: javascript arrays algorithm

我有两个长度相同的数组,例如var a = [5,2,6,2,7,5];var b = [2,3,7,4,3];。 我还有另一个数组var c = [0,0,0,0,0];

如何比较ab以将最高元素放入c,在这种情况下应该成为[5,3,7,7,5];

6 个答案:

答案 0 :(得分:2)

ES6单线解决方案:

c = a.map((a, i) => a > b[i] ? a : b[i])

答案 1 :(得分:2)

Array#映射到一个新数组,并取a中当前数字的最大值,以及数组b中具有相同索引的数字:

const a = [5, 2, 6, 2, 7];
const b = [2, 3, 7, 4, 3];
const c = a.map((num, i) => Math.max(num, b[i]));

console.log(c);

答案 2 :(得分:1)

您将迭代两个数组,在每个步骤进行比较,然后插入较大的数字:

注意:即使你提到你有相同长度的数组,你给出的两个样本数组也没有相同的长度,所以我的例子使用类似的等长数组:

let a = [5, 2, 6, 2, 7]
let b = [2, 3, 7, 4, 3]
let c = [0, 0, 0, 0, 0]

// we can use a single loop index `i` since the arrays have same length
for (let i = 0; i < a.length; i++) {

  // take the current number from a and from b
  let numA = a[i]
  let numB = b[i]

  // determine larger of the two numbers
  let largerNumber = numA > numB ? numA : numB

  // add larger to array at current position
  c[i] = largerNumber
}

console.log(c)

您可以将解决方案简化为简单的地图操作,如demonstrated by dhilt

答案 3 :(得分:0)

只需使用简单的for循环:

&#13;
&#13;
var a = [2, 3, 7, 8];
var b = [3, 2, 5, 9];
var c = [0, 0, 0, 0];

for (var i = 0; i < c.length; i++) {
  c[i] = a[i] > b[i] ? a[i] : b[i];
}

console.log("Result: "+c);
&#13;
&#13;
&#13;

答案 4 :(得分:-1)

参见示例:

var a = [5,2,6,2,7,5];
var b = [2,3,7,4,3];
var c = [0,0,0,0,0];
for(var i in c){
	c[i]=a[i]>b[i]?a[i]:b[i];
}
console.log('result:' + c);

答案 5 :(得分:-1)

试试这个,下面的代码需要两个数组并给出最大数

的结果
var array=[5,3,7,7,5];
var array2 = [5,6,4];
var array3=array.concat(array2);
var max=array3.sort((a,b)=>b-a)[0];
console.log("Result: " + max);