>  기사  >  웹 프론트엔드  >  코드워 일일 연습

코드워 일일 연습

巴扎黑
巴扎黑원래의
2017-06-27 09:12:311529검색

여가 시간에 질문해 보세요.

이 질문은 동일한 인접 요소를 삭제하고 새 배열을 반환한다는 뜻입니다.

여기에서는 Array.filter 방법이 가장 좋습니다. 내 대답은 다음과 같습니다.

var uniqueInOrder=function(iterable){  var arr = typeof(iterable) === 'string' ? iterable.split('') : iterable;  var pre = '';  return arr.filter(function(i){if(i === pre){      return false;
    }else{
      pre = i;      return true;
    }
  })
}

여기서 filter는 원래 배열을 수정하지 않고 새 배열만 반환하며 삭제 기능도 있습니다. false 값을 반환하면 true를 반환하는 값을 유지합니다.

두 번째 대답이 있습니다:

var uniqueInOrder=function(iterable){  var arr = typeof(iterable) === 'string' ? iterable.split('') : iterable;  var pre = '',result = [];
  arr.map(function(i){if(i !== pre){
      result.push(pre = i);
    }
  });  return result;
}

이것은 정규화된 값을 재현하기 위해 또 다른 빈 배열을 사용하는 것입니다.

제출 후 솔루션 영역에서 매우 똑똑한 답변을 보았습니다.

var uniqueInOrder = function (iterable){  return [].filter.call(iterable, (function (a, i) { return iterable[i - 1] !== a }));
}

여기서 호출 메소드는 array.filter를 영리하게 호출하여 반복 가능하도록 만드는 데 사용됩니다. 배열 또는 문자열. 연산을 위해 문자열을 배열로 변환하기 위해 열심히 노력할 필요가 없습니다.

그런 다음 그는 필터 반환 값의 특성을 활용하고 각 요소를 이전 요소와 차례로 비교하여 같지 않으면 true를 반환하고 현재 요소를 유지합니다.

이 질문은 비교적 간단합니다.

또 다른 간단한 질문:

매우 간단하므로 답변을 직접 게시하겠습니다:

function average(scores) {  var result = 0;
  scores.map(i=>result+=i);  return Math.round(result/scores.length);
}

결론 영역을 예시로 보여주는 가장 좋은 방법:

function average(scores) {  return Math.round(scores.reduce((x, y) => x+y, 0) / scores.length)
}

위 내용은 코드워 일일 연습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.