Javascript 防止向购物篮中添加重复项目

Javascript 防止向购物篮中添加重复项目,javascript,php,shopping-cart,Javascript,Php,Shopping Cart,我已经在PHP表单中创建了一个篮子,用户可以在其中插入他们选择的电影 问题: 如何防止将重复电影添加到此篮(选定电影列表)中 这是我的代码:(对不起,我没有粘贴所有的代码,因为它太长了) 精选电影 你的名单是空的 var master_basket=新数组(); $(文档).ready(函数(){$(“输入[id='selectType'])).change(函数()){ //自动完成部分 $('#btnMove')。在('click',函数(d)上{ 主控台日志(主控台篮); d、 预防默认

我已经在PHP表单中创建了一个篮子,用户可以在其中插入他们选择的电影

问题: 如何防止将重复电影添加到此篮(选定电影列表)中

这是我的代码:(对不起,我没有粘贴所有的代码,因为它太长了)


精选电影
你的名单是空的
var master_basket=新数组();
$(文档).ready(函数(){$(“输入[id='selectType'])).change(函数()){
//自动完成部分
$('#btnMove')。在('click',函数(d)上{
主控台日志(主控台篮);
d、 预防默认值();
所选变量=$(“#q”).val();
if(selected.length==0){
警惕(“无需移动”);
d、 预防默认值();
}否则{
var obj={
“电影名称”:选中,
“电影信息”:”
};
addToBasket(obj);
}
$(“#q”).val(“”);
});
});
功能addToBasket(项目){
主推篮(项目);
showBasketObjects();
}
函数showBasketObjects(){
$(“#篮子内容”).empty();
美元。每个(主篮子,功能(k,v){
$(“#basket_content”)。追加(“+v.movie_name+”);
});

我个人不建议使用javascript来防止这种重复,因为任何人都可以修改它并手动导致此问题,所以您应该在php和javascript中防止重复

无论如何,要在脚本中完成您想要的内容,我认为将部分代码修改为以下内容就足够了:

var master_basket = new Array();
selectedMovies = {};

  ///////

} else {
    var obj = {
        "movie_name":selected,
           "movie_info": ""
      };
    if(!selectedMovies.hasOwnProperty(selected)){
        addToBasket(obj);
        selectedMovies[selected] = obj;
    }
}

尝试将函数修改为

 function addToBasket(item) {

    var ifExists = false;

    for (i = 0; i < master_basket.length; ++i) {
      if(master_basket[i] == item)
        ifExists = true;

    }


    if(!ifExists)
       master_basket.push(item);

    }
}
函数addToBasket(项){
变量ifExists=false;
对于(i=0;i
感谢您的帮助,我尝试了您的代码,但当我单击“添加到列表”按钮时,它不会将电影名称添加到篮中,而且我在控制台中看到,我第一次插入电影名称时,它会显示
数组[对象]
,如果我第二次插入相同的电影,我会看到
数组[对象,对象]
在控制台中,…@mOna你能提供JSFIDLE吗?@mOna因为你正在将对象传递给arrayI,而arrayI没有使用fiddle。我如何将我的代码放在那里并与你共享?只需注册,你就可以共享你的示例工作代码了
 function addToBasket(item) {

    var ifExists = false;

    for (i = 0; i < master_basket.length; ++i) {
      if(master_basket[i] == item)
        ifExists = true;

    }


    if(!ifExists)
       master_basket.push(item);

    }
}