javascript - 判断一个对象是否已经存在于数组中

标签 javascript node.js vue.js

只有当我的条形码对于结构来说是新的时,我才想执行数据库操作。

我的计划是要么使用函数includes(),要么简单地计算数组中是否存在。

我发现了非常有用的代码片段,例如 countDuplicate 和函数 include() 来完成这项工作,但我想我的情况更具体一些。

但我不仅有一个由字符串组成的对象/数组。 (第一个例子)

我有一个对象,其中包含不同的对象及其属性。

//1st example (this works pretty well)

function countDuplicate(array, elem) { //just the special type of syntax for Vue/Node.js
    return array.filter(item => item == elem).length;
}

var cars = ["Saab", "Volvo", "BMW", "BMW", "BMW"];
console.log(countDuplicate(cars, "BMW"); //will return 3
console.log(cars.includes("BMW")); //will return true 

但正如我所说,我有更多这样的结构:

var object = {
  sub_object1: { title: "test1", barcode: "0928546725" },
  sub_object2: { title: "test2", barcode: "7340845435" },
};

如何才能获得相同的结果?

我的计划是这样做:

if(countDuplicate(object, "0928546725") == 0)
    //... do my operations

但这不起作用,因为我真的不明白如何进入对象的结构。我尝试了不同的循环,但实际上没有任何效果。

这是我的数组:

export default {
    data() {
      return {
        form: {
              items: [ //Barcodes
              ],
              status: 1,
              rent_time: Date.now()
              },
           submit: false,
           empty: false,
  }
 },

__________________________________________________________________________________ 解决方案:

我尝试了@adiga 的以下内容,它适用于示例,但不适用于我的真实案例。

这是我的控制台的屏幕: This is a screen of my console:

所以

A simple object.filter(a => a.barcode == elem) should work - @adiga

就这样?

countDuplicateBarcodes: function(obj, elem) {
    //return Object.values(obj).filter(a => a.barcode == elem).length;
    return obj.filter(a => a.barcode == elem).length;
}

不再起作用了...

最佳答案

使用 Object.values 获取数组中对象的所有值然后使用过滤器

function countDuplicateBarcodes(obj, elem) {
    return Object.values(obj).filter(a => a.barcode == elem).length;
}

const object = {
  sub_object1: { title: "test1", barcode: "0928546725" },
  sub_object2: { title: "test2", barcode: "7340845435" },
  sub_object3: { title: "test3", barcode: "0928546725" }
};

console.log(countDuplicateBarcodes(object, "0928546725"))

关于javascript - 判断一个对象是否已经存在于数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54456746/

相关文章:

javascript - 禁用按钮以避免多次提交表单

javascript - 在javascript中同一类的其他方法中获取数组

Node.js 在我自己的硬件上托管/部署

html - 使用没有src属性的vuejs在iframe中渲染组件

javascript - 使用Webpack拆分出一个模块,以便在WebWorker中加载

javascript - 如何在内联字段 Django 中添加属性?

javascript - 逐行处理文件,并在输出中保持行顺序

node.js - 使用 facebook 策略使用 Passport 进行 NodeJS 身份验证

vue.js - 使用多个激活器验证对话框

javascript - 如何从网站的其余部分确定内部 Vue 应用程序 css 的范围?