Próbuję włożyć wartość rangi do tablicy, jeśli nie jest pusta. Ale nie mogę sprawdzić pustej wartości.

Array Data 
0: {name: 0, age: 58, dob: "", mark1: 63, mark2: 43}
1: " "
2: " "
3: " "
4: " "
5: " "
6: " "

Jeśli obiekt jest pusty, nie powinien wchodzić do pętli if, teraz pętle wchodzą do wszystkich 6 obiektów.

for (let j = 0; j <= 6; j++) 
    {

        if(rankData[j] !==undefined &&  rankData[j] !==" " &&   (Object.keys(rankData[j]).length)!== 0 &&
        rankData[j] !=='undefined' &&  rankData[j] !=='undefined-undefined' )
        { 
            rankData[j].rank = J;
        }
    }

Jeśli obiekt nie jest pusty, należy przekazać wartość rangi. Ale teraz nawet obiekt jest pusty, wchodzi do pętli if i wyświetla błąd w tej linii rankData[j].rank = J;

1
John Ken 2 kwiecień 2020, 12:35

3 odpowiedzi

Najlepsza odpowiedź

Konieczne jest sprawdzenie, czy element tablicy spełnia warunek. Jeśli warunek jest spełniony, przypisz jakąś wartość do właściwości rank:

let arr = [
    { name: 0, age: 58, dob: "", mark1: 63, mark2: 43 }
    , " "
    , " "
    , " "
    , " "
    , " "
    , " "
];

for (let index = 0; index < arr.length; index++) {    
    let elem = arr[index];
    if (Object.keys(elem).length > 0 && typeof elem != 'string' && elem) {
        elem.rank = index;
        console.log(elem);
    }
}

console.log(arr);
1
StepUp 2 kwiecień 2020, 10:17

Jeśli chcesz sprawdzić, czy jakieś podane „coś” jest puste, możesz skorzystać z tej funkcji, którą kiedyś znalazłem w internecie.

function isEmpty (value) {
   if (typeof value === “undefined”) return true;
   if (value === null) return true;
   if (typeof value === “string” && value.trim().length === 0) return true;
    if (Array.isArray(value).length === 0) return true;
   if (typeof value === “object” && Object.keys(value).length === 0) return true

  // if none of that is true we return false 
    return false;
}
0
Ernesto 2 kwiecień 2020, 10:17

Myślę, że użyłeś J zamiast j (w rankData [j] .rank = J;)

var array = [
  {name: 0, dob: ""},
  " ",
  " ",
  " "
];

for(var j=0; j<=4; j++){
if(array[j] !== undefined && array[j] !== " ")
        {
            array[j].rank = j;
        }
}

console.log(array);
0
sanka sanjeewa 2 kwiecień 2020, 11:09