считать каждое значение в 2-х массивах, и если длина каждого массива не одинакова, нажмите те значения, которые имеют большую длину - PullRequest
0 голосов
/ 15 января 2019

как я могу добавить значения счетчика в длину массива, которая больше, чем другая длина?

допустим, я хочу добавить и выделить значения в 2 массивах,

IF 'index' is even
  we do arr1 + arr2
  push to 'newarr'
ELSE IF 'index' is odd
  we do arr1 - arr2
  push to 'newarr'

IF the each arrays not same length
  we should push that values array to newarr

пример случая:

function countTwoarray(arr1, arr2) {
  var result = []
  for(key in arr1 && arr2){
    if(key % 2 === 0){
      result.push(arr1[key] + arr2[key])
    } else if(key % 2 === 1){
      result.push(arr1[key] - arr2[key])
    } 
      // else if(!key){
      // result.push("in")
   // }
  }
  return result
}

console.log(countTwoarray([1, 3, 2, 1, 1], [1, 2, 3, 4, 5,1000])) 
// [ 2, 1, 5, -3, 6, 1000 ]

Вы можете увидеть последний результат NaN результат NaN должен быть 1000, потому что это значение arr2, которое length longer чем arr1 длина

Я хочу, чтобы результат kike this [ 2, 1, 5, -3, 6, 1000 ]

1 Ответ

0 голосов
/ 15 января 2019

Прежде всего, возьмите классический for оператор со счетчиком для индекса вместо for ... in оператора , где вы можете перебирать не только Разыскиваемые индексы.

Затем возьмите переменную длины с минимальной длиной обоих массивов с помощью Math.min и итерируйте массивы, выдвинув либо разницу, либо сумму, используя условный (троичный) оператор ?: [условный (троичный).

В конце возьмите оставшуюся часть каждого из массивов и поместите эти значения в набор результатов с помощью Array#slice от минимальной длины с синтаксисом разброса ..., где каждый элемент берется в качестве параметра.

function countTwoarray(arr1, arr2) {
    var result = [],
        i,
        l = Math.min(arr1.length, arr2.length)

  for (i = 0; i < l; i++) {
      result.push(i % 2 ? arr1[i] - arr2[i] : arr1[i] + arr2[i]);
  }
  result.push(...arr1.slice(l), ...arr2.slice(l));
  return result;
}

console.log(countTwoarray([1, 3, 2, 1, 1], [1, 2, 3, 4, 5, 1000]));
...