2015-04-11 5 views
1

Итак, я использую Angular, и у меня есть форма, где я могу ввести некоторые электронные письма. Я отправляю эти письма, и если они уже существуют, верните сообщение об ошибке с используемыми электронными письмами.Array содержит значение другого массива

объекты из формы выглядит следующим образом:

0: Object 
    email: "[email protected]" 
    name: "My Name" 
1: Object 
    email: "[email protected]" 
    name: "My Other Name" 

Так, например, если [email protected] уже используется я получить следующее сообщение об ошибке от моего API:

data: Array[1] 
    0: Object 
    email: "[email protected]" 
message: "Some email addresses are already in use." 

мне удалось используйте pluck от underscore.js, где я получаю массив писем.

В этом я застрял. Я хочу проверить, содержит ли электронное письмо из моего объекта формы значение из массива используемых писем. Если он содержит значение, я хочу добавить used: true в соответствующий объект формы.

Так скажем [email protected] используется, я хочу, чтобы моя форма объекта будет:

0: Object 
    email: "[email protected]" 
    name: "My Name" 
    used: true 
1: Object 
    email: "[email protected]" 
    name: "My Other Name" 
+0

В чем проблема для установки object.used = true; в вашем API, когда вы отправляете ответ? –

+0

Это SPA, поэтому объект формы является только клиентской стороной, и API отвечает сообщением и данными, которые содержат электронные письма, которые используются. – guidsen

+0

У вас есть доступ к коду API? –

ответ

0

Предполагая, что ваша структура данных выглядит так, вы можете вызвать API, получить ответ, а затем перебрать ваш массив проверки электронной почты, если они присутствуют в ответе API.

Для этого вы можете использовать простые петли for или даже метод Array.profotype.forEach. Предполагая, что for утверждения является наиболее стабильным способом, я дам вам пример этого:

// myData is the data array containing the various objects which have email and name 
// myResponse is the response object retrieved from your API call 

for (var i=0; i < myResponse.data.length; i++) { 
    for (var j=0; j < myData.length; j++) { 
     if (myResponse.data[i].email == myData[i].email) { 
      myData[i].used = true; 
     } 
    } 
} 

После того, как выше код выполняется, ваш объект данных формы будет выглядеть следующим образом:

myData = [ 
    { 
     email: "[email protected]", 
     name: "My Name", 
     used: true 
    }, 
    { 
     email: "[email protected]", 
     name: "My Other Name" 
    } 
]; 
+0

По какой-то причине он только добавляет 'used: true' в первый X, где сопоставляется электронное письмо. Если есть unmatch middleway, он не добавляет 'used: true'. Никогда не делал опечатку: P – guidsen

Смежные вопросы