Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как проверить наличие элемента массива? (https://javascript.ru/forum/misc/55747-kak-proverit-nalichie-ehlementa-massiva.html)

Alex1233 12.05.2015 19:02

Как проверить наличие элемента массива?
 
Всем доброго дня!

Помогите пожалуйста разобраться как проверять наличие элемента в массиве? Пол дня уже мучаюсь, кучу способов перепробовал - ничего не помогает =(

Написал небольшую функцию, и все классно работало (как задумывалось), пока не попробовал проверить работу с отсутствующими элементами в массиве - на этом и встрял. Each как только не находит элемент в массиве "стопорится", а хром выдает такую ошибку "Uncaught TypeError: Cannot read property '0' of undefined".


var allVal={t1960:[7500,0,2],t412:[100,0,0],t2537:[11,333,1]};

i=0;

var newVal = [];
var newVals = [];

$('[row="view"],[row="comm"],[row="rating"]').each(function(){   
    var id=$(this).parents().attr('id');
    var val=$(this).text();

    if(val>allVal[id][i]){
        $(this).css('fontWeight','bold');                
        $(this).attr('title','+'+(val-allVal[id][i]));
    }
    
    if(i<2){
      newVal.push(val);                
      i++;
    } else {
      newVal.push(val);
      newVals.push(id+':['+newVal+']');
      newVal=[];
      i=0;
    };     

})

Alex1233 12.05.2015 19:11

Вот в этой строке проблемы:

if(val>allVal[id][i]){


Точнее на ней все стопорится где-то на 4 цикле (когда идет работа с отсутсвующим элементом в массиве val). Здесь как то нужно сделать проверку на наличие элемента и если что просто не делать эти действия, а пропускать и переходить сразу к следующему циклу.

рони 12.05.2015 20:03

Alex1233,
if(allVal[id] && val>allVal[id][i]){

Alex1233 12.05.2015 20:10

Цитата:

Сообщение от рони (Сообщение 370441)
Alex1233,
if(allVal[id] && val>allVal[id][i]){

Спасибо большое, работает!!!

Блин, самое главное, что вроде как пробовал этот вариант.. Возможно отдельно от "&& val>allVal[id][i]" (отдельным условиям) - не работало... Странно..


Часовой пояс GMT +3, время: 17:34.