最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

查找出来,如果一个对象在数组中已经存在

运维笔记admin18浏览0评论

查找出来,如果一个对象在数组中已经存在

查找出来,如果一个对象在数组中已经存在

我想做一个数据库操作只有当我的条码是新的结构。

我的计划是要么使用函数包括()或简单地计算在阵列中的存在。

我发现非常有用的代码片段像countDuplicate和功能包括()来完成这项工作,但我想我的情况是更具体一点。

但是,我不仅有一个对象/数组其中包括字符串。 (第一实施例)

我有一个对象,其包括不同的对象和它们的属性。

//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以下和它的作品的例子,但不是我的真实情况。

这是我的控制台的屏幕:

所以

一个简单的object.filter(A => a.barcode == ELEM)应该工作 - @adiga

像那样?

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

不工作了...

回答如下:

得到在阵列usingObject.values对象的所有值,然后使用filter

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"))
发布评论

评论列表(0)

  1. 暂无评论