比较具有相同长度的两个阵列的相同索引

时间:2018-03-01 07:06:21

标签: javascript

我有两个长度相同的数组

array1 = [12,13,14,15,16]
array2 = [22,32,45,11,7]

现在我想比较javasacript中for循环中的相同索引值     例如:

array1[0] < array2[0]
array1[1] < array2[1]
array1[2] < array2[2]

如果array1[index]的值小于array2[index],则返回true

7 个答案:

答案 0 :(得分:6)

我认为输出必须是boolean数组。为此,您可以通过传递map函数来使用callback方法。

array1 = [12,13,14,15,16]
array2 = [22,32,45,11,7]

result = array1.map(function(item, i){
  return item < array2[i];
});

console.log(result);

或仅使用arrow函数。

array1 = [12,13,14,15,16], array2 = [22,32,45,11,7]
result = array1.map((item, i) => item < array2[i]);
console.log(result);

如果您想返回10值,可以使用+运算符,以force结果编号为原始类型。

result = array1.map(function(item, i){
  return + (item < array2[i]);
});

答案 1 :(得分:1)

如果要接收带有布尔值的数组,该值指示值是低还是高,请尝试:

var result = [];
for(var i = 0; i < array1.length;i++){
    result.push(array1[i] < array2[i]);
}

答案 2 :(得分:0)

试试这个:

  array1 = [12,13,14,15,16];
  array2 = [22,32,45,11,7];
  for(var x = 0; x < array1.length; x++) {
      if(array1[x] < array2[x]) {
          //do something
      }

  }

答案 3 :(得分:0)

如果我理解你对你的问题的意思,这就叫做lexicographical comparison,内置于其他语言的数组(例如Python或C ++)。

在Javascript中存在字符串,但您自己要为类似

的数组实现它
// lexical less-than-or-equal
function lex_leq(a, b) {
    let i = 0, na = a.length, nb = b.length, n = Math.min(na, nb);
    while (i<n && a[i] === b[i]) i++; // skip over equals
    return i === na || (i !== nb && a[i] < b[i]);
}

其他排序可以通过类似的代码计算或重复使用相同的实现...例如(a<b)相当于!(b<=a)

答案 4 :(得分:0)

a1 = [12,13,14,15,16]
a2 = [22,32,45,11,7]
result = a1.map(function(item, i){
return item < a2[i];
});
console.log(result);

答案 5 :(得分:0)

试试这个解决方案。这将告诉您哪个索引不匹配。

var array1 = [12,13,14,15,16];
var array2 = [12,13,14,15,34];

function compareArray(arr1, arr2) {
  if(arr1.length !== arr2.length) return false;
  return arr1.reduce(function(acc, val, index) {
    acc.push(val === arr2[index]);
    return acc;
  }, []);
}

var response = compareArray(array1, array2);
console.log(response);

答案 6 :(得分:0)

   

 array1 = [12,13,14,15,16]
 array2 = [22,32,45,11,7]
 result = []


array1.map(function(item, i){
       result[i] = item < array2[i];
});

console.log(result);