Jak zdobyć różne właściwości wartości z tablicy?

głosy
-1

Mam tej tablicy?

var arr = [{id:1,Name:Tom},
           {id:2,Name:Jon},
           {id:3,Name:Tom},
           {id:4,Name:Jack}]

Z tablicy powyżej muszę fecth wszystkie istniejące nazwy odrębne.

var result = getNamesDistinct(arr);

resultWynik powinien zawierać się:

 [Tom,Jon,Jack]; 

Moje pytanie brzmi, jak uzyskać wszystkie istniejące nazwy z arr odrębny?

Utwórz 10/12/2017 o 11:56
użytkownik
W innych językach...                            


3 odpowiedzi

głosy
1

Można to zrobić za pośrednictwem Set obiektu

const arr = [
   { id: "1", Name: "Tom" },
   { id: "2", Name: "Jon" },
   { id: "3", Name: "Tom" },
   { id: "4", Name: "Jack" }
];

const uniqueNames = [...new Set(arr.map(item => item.Name))];

console.log(uniqueNames);

Albo można iteracyjne nad tablicy i dodać warunek, aby uzyskać tylko unikalne nazwy.

const arr = [
   { id: "1", Name: "Tom" },
   { id: "2", Name: "Jon" },
   { id: "3", Name: "Tom" },
   { id: "4", Name: "Jack" }
];

const uniqueNames = arr.reduce(function(arr, item) {

   if(arr.indexOf(item.Name) === -1) {
      arr.push(item.Name);
   }

   return arr;

}, []);

console.log(uniqueNames);

Odpowiedział 10/12/2017 o 11:58
źródło użytkownik

głosy
3

Jeśli Setjest dostępny, można po prostu zrobić

new Set(arr.map(obj => obj.Name))

(przesuń do zestawu Array.fromjeśli trzeba tablicę)

Odpowiedział 10/12/2017 o 12:02
źródło użytkownik

głosy
1

można spróbować

var array = [{
        id: "1",
        Name: "Tom"
    }, {
        id: "2",
        Name: "Jon"
    }, {
        id: "3",
        Name: "Tom"
    }, {
        id: "4",
        Name: "Jack"
    }]

    function uniqueNames(array) {
        var newArray = [];
        array.forEach((value, key) => {
            newArray.push(value.Name)
        });
        return newArray
    }
   var myNewArray =  uniqueNames(array)
Odpowiedział 10/12/2017 o 12:25
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more