2016-09-23 4 views
-1

У меня есть массив с именем joinedArray. В одном случае оно имеет значение [undefined, undefined].Как утверждать условие `if` как правдивое, когда массив состоит из неопределенных объектов в Angular js

Я написал один if condition как:

if(joinArray === undefined){ 
    vm.selectedFriends = []; 
    angular.forEach($scope.contacts, function(contact){ 
     if (contact.selected) 
     vm.selectedFriends.push(contact.email); 
    }); 

    $http({ 
     url: 'http://192.168.2.8:7200/api/creatList', 
     method: 'POST', 
     data: {wData:userData, uId:vm.uid, userName:vm.uName, email:vm.selectedFriends} 
    }).success(function(res) { 
     console.log("success"); 
    }, function(error) { 
     console.log(error); 
     alert('here'); 
    }); 
    $mdDialog.hide(userData); 
} else { 
    $http({ 
     url: 'http://192.168.2.8:7200/api/sendMail', 
     method: 'POST', 
     data: {wData:userData, email:joinArray, uId:vm.uid, userName:vm.uName} 
    }).success(function(res) { 
     console.log("success"); 
    }, function(error) { 
     console.log(error); 
     alert('here'); 
    }); 
    $mdDialog.hide(userData); 
} 

Иногда joinedArray возвращается как [value, undefined] или [undefined, value]. Но только если оба значения не определены, если они переходят к состоянию if, в противном случае он должен перейти в состояние else.

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every – Bergi

+0

Возможный дубликат [Проверить, нет ли пустого массива или существует] (http://stackoverflow.com/ вопросы/11743392/check-if-array-is-empty-or-exists) –

ответ

1

Использование Array.every ...

var allAreUndefined = joinedArray.every(function(value) { 
    return value === undefined; 
}); 

Чтобы проверить, если массив определен вам нужно использовать TypeOf, как это было предложено в ответ на this question.

+0

Я отредактировал мой вопрос, как использовать для этого условия if. – Kevin

+0

Я использовал это раньше, если условие и я сделали, если условие вроде if (joinArray === allAreUndefined), но его не работает, оно будет в состоянии else. – Kevin

0

Используйте стробированный массив, замену регулярных выражений и пустое сравнение строк. Например:

/* If a stringified array consists of null values, convert it to an empty string, and return null 
 
    */ 
 
    if (JSON.stringify(Array(10)).replace(/^\[(null[,\]])+/,"") === "") 
 
     { 
 
     console.log(null); 
 
     } 
 
    else 
 
     { 
 
     console.log(NaN); 
 
     }

Или более конкретно:

"use strict"; 
 

 
/* evaluate a stringified array to get the evaled values */ 
 
var foo = Function("return eval(JSON.stringify(Array(10)).replace(/null/g, undefined))")(); 
 

 

 
if (JSON.stringify(foo).replace(/^\[(null[,\]])+/,"") === "") 
 
    { 
 
    console.log("null"); 
 
    } 
 
else 
 
    { 
 
    console.log("not null"); 
 
    } 
 

 

 
/* 
 
Use foo.indexOf(null) before all this to avoid false positives 
 
*/

Ссылки