我正在尝试确保在添加对象之前,在数组中没有该对象。如果它在里面,我想将其删除并在顶部添加一个新的(非常类似于浏览器的历史记录)
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",
},
]
答案 0 :(得分:1)
使用函数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; }
答案 1 :(得分:0)
您可以将includes
和indexOf
与unshift
一起使用,如下所示:
function addToArray(obj, arr) {
if (arr.includes(obj)) {
arr.splice(arr.indexOf(obj), 1);
arr.unshift(obj);
}
}
答案 2 :(得分:0)
使用.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);