2017-02-28 1 views
0

에있는 경우는 아래 내 주요 배열입니다.설정 값 값이 배열

예상 만 myArray 변수 출력 :

myArray = [ 
    {field: 'Saab', flag: true}, 
    {field: 'Volvo', flag: false}, 
    {field: 'BMW', flag: true}, 
    {field: 'Mercedes', flag: false} 
]; 

이 사람이 어떻게이 일을 나에게 보여 주시겠습니까? 나는 다음을 시도했다 : 그것을 해결하는 방법을 방법

var myArray = [ 
 
    {field: 'Saab', flag: false}, 
 
    {field: 'Volvo', flag: false}, 
 
    {field: 'BMW', flag: false}, 
 
    {field: 'Mercedes', flag: false} 
 
]; 
 
var cars1 = ["Saab", "BMW"]; 
 

 
console.log(myArray.filter(x => cars1.indexOf(x.field) > -1));

답변

1

e 배열이고 car은 현재 개체를 나타냅니다. 그런 다음 car.flagcars1.indexOf(car.field) > -1의 결과에 할당합니다. cars1에 필드가있는 경우 결과는 true이고 그렇지 않은 경우 false입니다.

Array.prototype.includes을 사용하여 배열에 특정 값이 포함되어 있는지 확인할 수도 있지만 모든 브라우저에서 지원되는 것은 아닙니다 (대부분). 이것은 indexOf 체크를 제거합니다

var myArray = [ 
 
    {field: 'Saab', flag: false}, 
 
    {field: 'Volvo', flag: false}, 
 
    {field: 'BMW', flag: false}, 
 
    {field: 'Mercedes', flag: false} 
 
]; 
 
var cars1 = ["Saab", "BMW"]; 
 

 
myArray.forEach(car => car.flag = cars1.includes(car.field)); 
 
console.log(myArray);

+0

이 작업을했습니다. 저의 도움을 많이 주셔서 감사합니다. –

+0

에 따르면 당신은 브라우저에서 doenst 작업을 포함합니까? –

+0

@Learning Internet Explorer는 현재이 기능을 지원하지 않지만 다른 모든 주요 브라우저는 지원합니다. – Li357

1

하나는 myArray에서 지정된 요소가 cars1 배열에 존재하는지 확인하기 위해 Array#some을 사용하는 것입니다. 그렇다면 flag을 true로 설정하십시오. 일 이상

var myArray = [ 
 
    {field: 'Saab', flag: false}, 
 
    {field: 'Volvo', flag: false}, 
 
    {field: 'BMW', flag: false}, 
 
    {field: 'Mercedes', flag: false} 
 
]; 
 
var cars1 = ["Saab", "BMW"]; 
 

 
myArray.forEach(car => car.flag = cars1.indexOf(car.field) > -1); 
 
console.log(myArray);

위의 반복 : cars1field 포함 된 경우 배열을 반복하고 확인 Array.prototype.indexOfArray.prototype.forEach을 활용할 수

var myArray=[{field:"Saab",flag:false},{field:"cStatus",flag:false},{field:"BMW",flag:false},{field:"Mercedes",flag:false}], 
 
    cars1 = ["Saab", "BMW"]; 
 

 
    myArray.forEach(v => cars1.some(c => c == v.field ? v.flag = true : null)); 
 
    console.log(myArray);

+0

내가 궁금 는'some' 여기에 필요합니까? 그것은 단지 약간의 과장된 것처럼 보입니다. – Li357

+0

@AndrewLi 문제를 해결하는 방법 중 하나 일뿐입니다. 그리고 tbh 나는 그것을 꽤 좋아한다. –

+0

답장을 보내 주시고 친절하게 도와 주시고, 다음과 같이 계속 도와 주셔서 감사합니다. –

1

이봐 당신 '에서 myArray'을 통해 루프에 foreach는 방법을 사용하여 다음을 통해 각 반복에 대한 cars1에 .find 방법을 사용할 수 있습니다 학습 귀하의 배열. cars1.find가 현재 자동차 필드와 동일한 것을 찾으면 value.flag를 true로 설정합니다. 그렇지 않으면 false로 설정됩니다. 여기

는 .find() 메소드 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

난이 도움이되기를 바랍니다에 대한 링크입니다! 자동차에 대한

var myArray = [ 
    {field: 'Saab', flag: false}, 
    {field: 'Volvo', flag: false}, 
    {field: 'BMW', flag: false}, 
    {field: 'Mercedes', flag: false} 
]; 

var cars1 = ["Saab", "BMW"]; 

myArray.forEach(value => { 
    cars1.find((v) => v === value.field) ? value.flag = true : value.flag = false; 
}) 
+0

안녕하세요 앤드류는 의견에 감사드립니다. 내가 제공 한 스 니펫으로 코드를 실행했는데 작동하지 않았습니다. 아이디어가 있습니까? –

+0

나를 위해 잘 작동합니다 : https://jsfiddle.net/uq31s8fv/ - 또한 괄호를 제거 할 수 있습니다. 나는 나의 코멘트에서 실수를했다, 나는'value.flag'가 아니라'v.flag'를 의미했다. Whoops – Li357

+0

답을 구하고 설명을 해주셔서 감사 드리며 나를 도우려는 당신의 친절한 노력에 감사드립니다. –

1

당신은 사용할 수 Set 하고 만 myArray을 반복.

키 부분은 기본적으로 복귀 기능 체크의 제 1 내측 단계

(cars => o => cars.has(o.field) && (o.flag = true))(new Set(cars1)) 
    (cars =>           )(new Set(cars1)) 
// ^^^^                closure over 
//              ^^^^^^^^^^^^^^ set with car values 

cars1

myArray.forEach(
    (cars => o => cars.has(o.field) && (o.flag = true))(new Set(cars1)) 
); 

의 콘텐츠 집합에 마개를 사용하는 콜백이고 가 설정되면 field이 세트에 있고 true에서 o.flag으로 할당이 발생합니다.

   o => cars.has(o.field) && (o.flag = true) 
//   ^          currentValue of array 
//    ^^^^^^^^^^^^^^^^^      check if field is in set 
//         ^^     if true 
//          ^^^^^^^^^^^^^^^ evaluate expression 
//              assign true to o.flag 

var myArray = [{ field: 'Saab', flag: false }, { field: 'cStatus', flag: false }, { field: 'BMW', flag: false }, { field: 'Mercedes', flag: false }], 
 
    cars1 = ["Saab", "Bmw"]; 
 

 
myArray.forEach((cars => o => cars.has(o.field) && (o.flag = true))(new Set(cars1))); 
 

 
console.log(myArray);

+0

도와 주시려는 친절한 노력으로 Upvoted. 나를 설명해주십시오. cars = > o => cars.has (o.field) && (o.flag = true)) (새 Set (cars1)) –

+1

@ 학습, 어쩌면 편집이 약간 도움이됩니다. –

+0

답변을 해주셔서 너무 감사하고 설명을 주신 데 대해 감사 드리며 저를 도우려는 친절한 노력에 감사드립니다. –

관련 문제