大家好,我正在将数据作为对象添加到数组中,但是我想查看是否有重复的项目代码,因此它停止执行该函数并返回,并且如果条件为true,则它采用构造函数值并将其添加到数据结构中
这是我试图阻止它增加价值的方法,但是我无法按需使用
function getNo(b){
for (const [key, value] of Object.entries(data)) {
let val = value.itemCode;
if(b === val){
alert('Its equalt to item code');
break;}else{ return b;};
}}
----我想要的是----- 1)检查itemCode构造函数中的值是否重复2)如果其值重复,则它应该显示并警告并停止执行该函数3)并添加此函数进入addItem函数以检查其重复与否4)我将值存储在数据数组中
var item = function(name,itemCode,stock){
this.name = name;
this.itemCode = itemCode;
this.stock = stock;
}
var data = [];
function addItem(name,itemCode,stock){
var Newitem = new item(name,itemCode,stock);
data.push(Newitem);
}
addItem('BlueTee',100,50);
addItem('Yellow tee',101,100);
addItem('BrownTee',102,120);
有多种处理方法。您的选择应取决于其他用例。
最简单的方法是将数据定义为javascript对象而不是数组。这将需要每个对象的键。看起来像这样:
var data = {};
function addItem(name, itemCode, stock){
var newItem = new item(name, itemCode, stock);
if(data[itemCode] === undefined)
data[itemCode] = newItem;
}
如果以后要以数组形式访问数据,则可以在每次插入时在数组上进行迭代。看起来像这样:
function addItem(name, itemCode, stock){
var newItem = new item(name, itemCode, stock);
if(!data.some(function(x => x.itemCode === itemCode)){
data.push(newItem);
}
}
这将比普通插入慢,尤其是对于大型数据集。如果您要使用非常大的数据集并且需要能够以数组形式访问,那么我将在两者之间使用混合形式。javascript对象将用于直接访问该对象。最好使用类类的实现,但是如果不使用oo,代码将如下所示:
var data = [];
var keys = {};
function addItem(name, itemCode, stock){
var newItem = new item(name, itemCode, stock);
if(keys[itemCode] === undefined){
data.push(newItem);
keys[itemCode] = data.length - 1;
}
}
如果您要修改数组而不只是添加元素,则此实现也将变得复杂
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句