2017-12-13 7 views
0

그래서이 값을 하나의 항목 또는 여러 항목 중 하나가 될 수있는 API에서 다시 가져옵니다.두 배열에서 일치하는 값을 찾을 수

지도로 넘어 가서 원하는 값을 반환합니다.

const value = JSONObject.map(data => {return data.value}); 

console.log(value); // ["value"] 

또는 맵에 둘 이상의 값이있는 경우 여러 문자열.

이제 혼란 스러울 부분이 있습니다.

API의 값과 일치시키려는 다른 로컬 JSON 객체가 있습니다.

for(i = 0; i < LocalJSONObject; i++;){ 
if(value === LocalJSONObject[i].value){ 
console.log("matching values") 
} 
} 

"value"는 하나의 단일 문자열 항목 또는 여러 문자열 항목을 포함 할 수있는 배열입니다.

내 이해는 위의 문이 배열을 결코 사실이 아니며 따라서 기록하지 않는 문자열과 비교하는 것입니다.

값 배열의 값을 비교하려면 어떻게해야합니까?

답변

1
for (var lo = 0; lo < LocalJSONObject.length; ++lo) { 
    for (var va = 0; va < value.length; ++va) { 
    if (value[va] === LocalJSONObject[lo].value) { 
     console.log('Matching values:', value[va]); 
    } 
    } 
} 
+0

이것은 내가 원하는 결과를 제공합니다. Underscore.JS가 코드를 좀 더 깨끗하게 만들 수있는 방법이 있는지 궁금합니다. –

+0

@AlexanderMcComb, 내게는 두 개의 중첩 된 루프가 있습니다. 언더 코어에 대해서는 잘 모릅니다.하지만 신경 쓰지 않을 것입니다. 매우 일반적인 구조입니다. 중요한 것은 색인 이름에주의를 기울이는 것입니다 ... 만약 당신이'i'와'j'를 (많은 사람들처럼) 이름 붙이면, 따르기가 더 어렵고 에러가 발생하기 쉽습니다; 'lo'와'va '를 사용하면 눈에 더 쉽게 접근 할 수 있습니다. – Rodrigo

+0

그냥 루프에 중첩 된 곳이 일반적으로 나쁜 생각 인 곳을 읽은 것으로 생각합니다. 하지만 실제로 저에게 답을 해주셔서 감사합니다! 정말 감사합니다! –

1

예, 당신은 map 방법은 배열을 반환하기 때문에 당신의 문이 문자열 배열을 비교하는 것을 가정에서 올바른입니다.

효율적으로 해결하려면 Array.prototype.includes() 메서드를 사용하여 결과를 얻을 수 있습니다.

for(i = 0; i < LocalJSONObject; i++;){ 
if(value.includes(LocalJSONObject[i].value)){ 
    console.log("matching values") 
} 
} 
+0

나는 이것을 시도해 보겠다. didnt은 내가 시도한 것을 포함한다고 생각하지 않았다. 알려 드리겠습니다! –

+0

정확히 똑같이 작동하며 논란의 여지가 더 빠를 수도 있습니다. 도와주세요! –

관련 문제