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

283

如果我有以下的对象数组:

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

有没有一种方法可以遍历数组,检查特定的用户名值是否已经存在,如果存在,则什么也不做,但如果不存在,则添加一个带有该用户名(和新ID)的新对象到数组中?

谢谢!


1
比尔和泰德应该有相同的ID吗? - user2357112
为什么有两个具有相同 id 的元素?这个数组中的元素是否可能被移除,或者我们可以确定新元素的 id 总是等于 arr.length + 1 吗? - raina77ow
如果您不想使用循环,请查看这个 Q&A 来扩展数组原型,https://dev59.com/YXI-5IYBdhLWcg3wKVA9。 - Cem Özer
本地函数与普通循环相比较慢,而且它们的支持仅限于某些浏览器版本。请检查下面的答案。 - Zaheen
这是一个基本上错误的问题,因为你可以通过避免使用数组来实现。 - Bekim Bacaj
@user2576960 当你有时间时,请检查我的解决方案,因为它通过一个简单的一行函数来简洁地实现了这个目标。我提供了几种不同的方法来实现这个目标,但我觉得我的**#1#2**解决方案最符合你的要求。 - Brandon McConnell
22个回答

0

-1
const __checkIfElementExists__ = __itemFromArray__ => __itemFromArray__.*sameKey* === __outsideObject__.*samekey*;

    if (cartArray.some(checkIfElementExists)) {
        console.log('already exists');
    } else {
        alert('does not exists here')


这确实将指定的用户名添加到源数组中,就像问题所要求的那样。 - Brandon McConnell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接