查找出来,如果一个对象在数组中已经存在
我想做一个数据库操作只有当我的条码是新的结构。
我的计划是要么使用函数包括()或简单地计算在阵列中的存在。
我发现非常有用的代码片段像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"))