фильтрация и добавление объекта в массив без дубликатов - PullRequest
0 голосов
/ 26 февраля 2019

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

    let numberArray =  [ {
  "name": "Smith",
    "number": "088-002-0002",
},
 {
  "name": "Jhon",
    "number": "088-111-2222",
},];

let test = { "name": "Smith",
  "number": "088-002-0002",};

numberArray.filter(obj => obj.number !== test.number);
numberArray.unshift(test);

console.log(numberArray);

//Expected
 Array [
 Object {
    "name": "Smith",
    "number": "088-002-0002",
 },
 Object {
   "name": "Jhon",
   "number": "088-111-2222",
 },
]

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

Используйте функцию findIndex, а затем проверьте, удаляет ли indexOf > -1, в этом случае, этот индекс и, наконец, unshift новый объект.

// This is to illustrate -> "name": "Smithhhhh"
let numberArray = [{    "name": "Smithhhhh",    "number": "088-002-0002",  },  {    "name": "Jhon",    "number": "088-111-2222",  }],
    test = {  "name": "Smith",  "number": "088-002-0002",},
    indexOf = numberArray.findIndex(obj => obj.number === test.number);
    
if (indexOf !== -1) numberArray.splice(indexOf, 1);

numberArray.unshift(test);
console.log(numberArray);
.as-console-wrapper { max-height: 100% !important; top: 0; }
0 голосов
/ 26 февраля 2019

Поиск объекта с помощью .find().Если объект не возвращается, используйте .unshift() для обновления массива.

let numberArray = [{
    "name": "Smith",
    "number": "088-002-0002",
  },
  {
    "name": "Jhon",
    "number": "088-111-2222",
  },
];

let test = {
  "name": "Smith",
  "number": "088-002-0002",
};



if (!numberArray.find(o => o.number === test.number)) {
  numberArray.unshift(test);
}



console.log(numberArray);
0 голосов
/ 26 февраля 2019

Вы можете использовать includes и indexOf с unshift следующим образом:

function addToArray(obj, arr) {
    if (arr.includes(obj)) {
        arr.splice(arr.indexOf(obj), 1);
        arr.unshift(obj);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...