2017-09-28 6 views
1

I 가진 개체 배열을 반복하는 것을 필요로 'X' 그래서 데이터가 다음과 같이 추가 될 때,가</p> <pre><code>{ [ {foo: a, bar: b} ] } </code></pre> <p>하면 I가 <code>foo</code> 배열의 대상 부재의 마지막 두 값 중 적어도 하나를 포함하는지 확인해야 다음 값을 사용하여 마지막 두 개체

{ 
[ 
    {foo: a, bar: b}, 
    {foo: x, bar: d}, 
    {foo: e, bar: f} 
] 
} 
는 true를 돌려

, foo는 아직 정의되지 않은 때문에 데이터가 여전히 비어 있거나 1보다 작을 때 오류를 반환하지만 .

array[length - 2].foo === 'x'? : tit() : tat()과 같은 구문이 있는지 확인하려고했으나 정의되지 않았거나 추가되지 않았기 때문에 아직 정의되지 않았습니다.

확인할 적절한 방법은 무엇입니까? 이상하게도 나는 이것을 else과 함께 함부로 잡을 수 없다.

+0

는 '길이 체크 추가를 포함하는 경우

array.slice(-2) 

또한 확인하기 위해 some 방법을 사용 '배열을 처리하기 전에. – Tushar

+0

array (0) .foo가 아직 생성되지 않았기 때문에'if (array [0] .foo)'에 의해 먼저 검사했지만 아직 배열을 반환하지 않습니다. – Ardhi

답변

1

마지막으로 two 요소를 취하려면 slice 메소드를 사용하면된다. foo 배열 객체 부재는 적어도 하나 'x',

let array= [{foo: 'a', bar: 'b'}, {foo: 'x', bar: 'd'}, {foo: 'e', bar: 'f'}]; 
 
console.log(array.slice(-2).some(a=>a.foo=='x')); 
 
array=[]; 
 
console.log(array.slice(-2).some(a=>a.foo=='x'));

+0

그래서 배열이 비어 있으면 false를 반환하고 정의되지 않았습니까? – Ardhi

+0

@Ardhi, false를 반환합니다. 업데이트 된 답변을 찾아보십시오. –