Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中增加对象内部的唯一值_Javascript_Jquery - Fatal编程技术网

如何在Javascript中增加对象内部的唯一值

如何在Javascript中增加对象内部的唯一值,javascript,jquery,Javascript,Jquery,这是我关于stackoverflow的第一个问题 $("button").click(function(){ var text = "<ul>"; var item = $(".inputvalue").val(); var n = checkvalue(myArray, item); if (!n) { myArray.push(item); } else { counter++; } for (var i = 0; i &l

这是我关于stackoverflow的第一个问题

$("button").click(function(){
  var text = "<ul>";
  var item = $(".inputvalue").val();
  var n = checkvalue(myArray, item);
  if (!n)
  {
    myArray.push(item);
  }
  else
  {
    counter++;
  }
  for (var i = 0; i < myArray.length; i++)
  {
    var valuetostring = "class" + i.toString();
    text += "<li class=" + valuetostring + ">" + myArray[i] + " x " + counter + "</li>";
  }
  $("#counter").text(counter);
  document.getElementById("output").innerHTML = text;
});
$(“按钮”)。单击(函数(){
var text=“
    ”; var item=$(“.inputvalue”).val(); var n=校验值(myArray,item); 如果(!n) { myArray.push(项目); } 其他的 { 计数器++; } 对于(var i=0;i“+myArray[i]+“x”+计数器+””; } $(“#计数器”)。文本(计数器); document.getElementById(“输出”).innerHTML=text; });

我需要此解决方案,以便在键入新值时向数组中添加唯一值。如果输入了相同的值,则值后的数字应增加1

像这样:

  • 沙发x1
  • 枕头×4
  • 主席x1
  • 表X3
我该怎么做

如果我的代码有点业余,我很抱歉,我已经为此努力了两个晚上,但仍然无法理解


你能帮帮我吗?谢谢。

如果您正在使用jQuery,那么您应该继续使用该api,而不是同时使用原生api和jQuery,并且您真的应该为变量指定有意义的名称,以便将来您以及查看您的代码的其他人更容易使用

此代码的主要优点是,您可以使用对象文字
{}
来存储添加的项目及其计数。所有项目都是唯一的,因为对象不能有重复的键

//使用对象存储项目
常量项={};
常量$input=$('.inputvalue')
常量$output=$(“#output”)
//创建一个包含您的物品及其数量的ul
函数渲染(项目){
常量$ul=$(“
    ”) $。每个(项目、功能(键、值){ $ul.append($(`li>${key}x${value}`)) }) 退货$ul } $(“.run1”)。单击(函数(e){ //从输入字段中获取值 常量项=$input.val() //如果输入返回中没有项目,则不执行任何操作 如果(项目==''){ //您可以在此处显示错误消息 返回错误 } //如果不存在项目的密钥,请创建它 如果(!项[项]){ //初始化为0 项目[项目]=0 } //增加你的数量,我们可以确保我们在这一点上有一个项目 项目[项目]+=1 //渲染输出 $output.html( 渲染(项目) ) console.log('items',items) });
    
    运行1
    


    您可以尝试使用如下对象,然后访问该对象进行显示,而不是使用数组。请记住,这是一个精简版本,您需要验证输入,确保其格式适合作为对象键

    var inputObj={};
    变量项=函数(输入){
    if(inputObj[input]==未定义){
    inputObj[input]=1;
    }
    否则{
    inputObj[input]+=1;
    }
    }
    参赛作品(“你好”);
    条目(“再见”);
    参赛作品(“你好”);
    //key,为您提供onject中所有键的数组
    console.log(Object.keys(inputObj))
    //显示整个对象的键特性对
    Object.keys(inputObj).forEach(函数(键){
    log(key,inputObj[key]);
    });
    //访问个人属性
    console.log(“Hello Property=,inputObj.Hello)
    已测试并正常工作! 请查看代码注释,并利用
    reduce
    函数获取
    数组中元素的总和

    //全局变量
    常数arr=[];
    $('.run1')。单击(函数(){
    让val=$('.inputvalue').val(),
    计数器=美元(“#计数器”),
    outputEl=$(“#output”),
    outputHtml='',
    obj={};
    //消毒
    val=$.trim(val);
    //处理空值时不执行任何操作
    如果(!val){
    返回;
    }
    //将值添加到主数组中
    arr.push(val);
    //创建包含总计的对象
    obj=arr.REDUCT(功能(累计,项目){
    如果(累计[项目]){
    累计[项目]+=1;
    }否则{
    累计[项目]=1;
    }
    累积收益;
    }, {});
    //构建HTML
    $。每个(对象、功能(键、计数){
    outputtml+='
  • '+key+'x'+count+'
  • '; }); //打印HTML并更新计数器 html(outputtml); 计数器文本(arr.length); });
    .box{
    填充:20px;
    边框:1px实心#ccc;
    显示:内联块;
    浮动:左;
    边缘底部:20px;
    }
    /*为按钮设置此光标始终是一个很好的做法*/
    .run1{
    光标:指针;
    }
    
    运行1
    


    很难理解您的代码。如果您为
    foo、counter、bool和bar选择有意义的变量名,这会有所帮助如果删除所有与html相关的代码,只保留有问题的部分,也会更容易提供帮助。