首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个数字数组和最高值返回数组

问比较两个数字数组和最高值返回数组
EN

Stack Overflow用户
提问于 2015-09-18 16:24:17
回答 5查看 2.5K关注 0票数 1

比较两个整数数组并返回每个数组中较高对应整数的唯一数组的最有效方法是什么?

(可使用寄屋)

例:

代码语言:javascript
复制
var arr1 = [0, 1, 2, 1, 0];
var arr2 = [1, 0, 0, 3, 0];

// result = [1, 1, 2, 3, 0];
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-09-18 16:30:23

代码语言:javascript
复制
function selectHighestValues (arr1, arr2) {
  var maxLength = Math.max(arr1.length, arr2.length);
  var _arr = [];
  for (var i = 0; i < maxLength; i++) {
    if (arr1[i] && arr2[i]) {
      _arr[i] = Math.max(arr1[i], arr2[i]);
    } else if (arr1[i]) {
      _arr[i] = arr1[i]; 
    } else {
      _arr[i] = arr2[i]; 
    }

  }
  return _arr;
}

通过剪接最长的数组和连接:

代码语言:javascript
复制
function selectHighestValues (arr1, arr2) {
  var minLength = Math.min(arr1.length, arr2.length);
  var maxLength = Math.max(arr1.length, arr2.length);
  var longestArrayIndex = arr1.length > arr2.length ? 0 : 1;
  var _arr = [];
  for (var i = 0; i < minLength; i++) {
    _arr[i] = Math.max(arr1[i], arr2[i]);
  }
  if (maxLength > minLength) {
    var sliced = Array.prototype.slice.call(arguments[longestArrayIndex], minLength, maxLength);
    _arr = Array.prototype.concat.call(_arr, sliced);
  }
  return _arr;
}
票数 2
EN

Stack Overflow用户

发布于 2015-09-18 16:35:47

下面是我的第一个效率较低的方法:

代码语言:javascript
复制
var arr1 = [0, 1, 2, 1, 0];
var arr2 = [1, 0, 0, 3, 0];

arr1.map(function (item, i) {
  return Math.max(item, arr2[i])
}); // [1, 1, 2, 3, 0]

它所缺乏的是速度,它从美丽中获得!

或者对你来说,ES6狂人:

代码语言:javascript
复制
var arr1 = [0, 1, 2, 1, 0];
var arr2 = [1, 0, 0, 3, 0];

arr1.map((item, i) => Math.max(item, arr2[i])); // [1, 1, 2, 3, 0]
票数 3
EN

Stack Overflow用户

发布于 2015-09-18 16:30:19

蛮力!

代码语言:javascript
复制
var arr1 = [0, 1, 2, 1, 0];
var arr2 = [1, 0, 0, 3, 0];
var result = [];

for(var i = 0; i < arr1.length; i++) {
  if (arr1[i] > arr2[i]) {
    result.push(arr1[i]);  
  } else {
    result.push(arr2[i]);
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32656782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档