当前位置: 首页 > 知识库问答 >
问题:

检查Javascript对象数组中是否存在对象值,如果不存在,则向数组中添加新对象

毕胡非
2023-03-14

如果我有以下对象数组:

[ { id: 1, username: 'fred' }, { id: 2, username: 'bill' }, { id: 2, username: 'ted' } ]

是否有一种方法可以在数组中循环,以检查特定用户名值是否已经存在,如果它什么也不做,但如果它不做,则使用所述用户名(和新ID)向数组中添加一个新对象

谢谢!

共有3个答案

杨乐意
2023-03-14

检查现有用户名非常简单:

var arr = [{ id: 1, username: 'fred' }, 
  { id: 2, username: 'bill'}, 
  { id: 3, username: 'ted' }];

function userExists(username) {
  return arr.some(function(el) {
    return el.username === username;
  }); 
}

console.log(userExists('fred')); // true
console.log(userExists('bred')); // false

但当你必须向这个数组中添加一个新用户时,该怎么做并不那么明显。最简单的解决方法是,只需使用id等于数组的新元素。长度1

function addUser(username) {
  if (userExists(username)) {
    return false; 
  }
  arr.push({ id: arr.length + 1, username: username });
  return true;
}

addUser('fred'); // false
addUser('bred'); // true, user `bred` added

它将保证IDs的唯一性,但如果将某些元素从其末端移除,则会使该数组看起来有点奇怪。

闻人和泽
2023-03-14

这个小片段对我有用...

const arrayOfObject = [{ id: 1, name: 'john' }, {id: 2, name: 'max'}];

const checkUsername = obj => obj.name === 'max';

console.log(arrayOfObject.some(checkUsername))

如果你有像['john','marsh']这样的元素数组,那么我们可以这样做

const checkUsername = element => element == 'john';
    
console.log(arrayOfObject.some(checkUsername))
苗信鸥
2023-03-14

我假设ids在这里是唯一的。一些是检查数组中事物存在的一个很好的函数:

const arr = [{ id: 1, username: 'fred' }, { id: 2, username: 'bill' }, { id: 3, username: 'ted' }];

function add(arr, name) {
  const { length } = arr;
  const id = length + 1;
  const found = arr.some(el => el.username === name);
  if (!found) arr.push({ id, username: name });
  return arr;
}

console.log(add(arr, 'ted'));
 类似资料:
  • 问题内容: 我试图检查对象数组中是否存在特定项目(属性值),但找不到任何解决方案。请让我知道,我在这里想念的是什么。 问题答案: 您可以像这样过滤数组: 它将返回匹配闭包中指定条件的元素数组-在上述情况下,它将返回包含所有属性等于1的元素的数组。 由于您需要布尔结果,因此只需执行以下检查: 如果过滤后的数组至少包含一个元素,则为true

  • 问题内容: 我有下一个JSON: 知道JSON对象中是否存在“ dog”值的最佳方法是什么? 谢谢。 解决方案1 解决方案2(JQuery) 解决方案3(使用some()方法) 问题答案: JSON变量引用具有一个称为“名称”的属性的对象数组。我不知道最好的方法,但这就是我的工作吗?

  • 我到处都找不到一个类似于我的问题的答案,在Java中。我使用的是数组,而不是数组列表。 每次在我的咖啡店下新的订单时,咖啡店必须添加到客户已经访问过的商店数组中,但它应该只出现一次,即使他们访问过两次说‘星巴克’。 我有一个main文件,一个CoffeeShop类,和一个Customer类,这三个文件都在OOP中协同工作。 我认为“this”应该是调用“.newOrder()”的特定咖啡店,但大体

  • 我试图让用户输入日期来存储它,但我似乎无法将其记录下来。 当我试图将创建的对象添加到数组时,问题就来了。 以下是另一个类,以供setDay,setMonth,setyear参考:public class OurDate{private int day;private int month;private int year;

  • 我试图检查我收到的新数据对我持有的对象,我试图找出的是,如果他们的关键字的对象,我正在发送匹配的任何关键字的对象,我目前有。 所以我抓着一个物体就像 然后我收到一个单件物品 我想检查这个对象与对象数组(myObj),看看是否有任何东西与关键字“三”在里面(我不关心值,只是关键字匹配),所以我可以把它弹出到一个if语句分开就像- 我使用下划线。谢谢 编辑:对不起,这不清楚,我编辑它是为了澄清- 我握