Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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_Node.js_Forms_Hash_Ejs - Fatal编程技术网

如何使用JavaScript在哈希映射中选择性地存储用户输入

如何使用JavaScript在哈希映射中选择性地存储用户输入,javascript,node.js,forms,hash,ejs,Javascript,Node.js,Forms,Hash,Ejs,我有一个将JSON文件作为参数的算法,如下所示: {"quiz": { "algorithm_id_1": "4", "algorithm_id_2": "2", "algorithm_id_3": "3", // ... algorithm_id是一个输入字段的id,后面的数字是用户为该输入字段选择的值(大多数是滑块) 我的问题如下: 如果一个输入与另一个输入具有相同的id,如何防止重叠?(例如“算法id\u 1”:“2”、“3”而不是“

我有一个将JSON文件作为参数的算法,如下所示:

{"quiz": {                
  "algorithm_id_1": "4",
  "algorithm_id_2": "2",
  "algorithm_id_3": "3", 
   // ...
algorithm_id
是一个输入字段的id,后面的数字是用户为该输入字段选择的值(大多数是滑块)

我的问题如下:

  • 如果一个输入与另一个输入具有相同的id,如何防止重叠?(例如
    “算法id\u 1”:“2”、“3”
    而不是
    “算法id\u 1”:“2”、…“算法id\u 1:”3”
我目前正在获取每个输入字段的id及其相应的值,但每个响应都存储为自己的对象

const allinput=$(“:input”);
//取回
对于(变量i=0;i});
您可以更改数据结构,使键数组的值如下:

{
 quiz: {
   algorithm_id_1: [2,3],
   algorithm_id_1: [1,6],
   ...
 }
}
为此,您需要修改更新数据结构的方式

基本上,您需要检查对象是否已经有一个名为“algorithm_id_1”的键,如果没有,则添加该键,并使用用户输入的值将其值设置为一个数组。如果它确实存在,则将新输入的值推送到现有数组

在您的示例中,每次发生更改时都要创建地图,这并不理想,但我在这里不讨论这一点

jQuery(":input").change(function() {
  for (var i = 0; i < allInputs.length; i++) {
    // localStorage.setItem(i, allInputs[i].value);

    // this is the part your question seems to be concerned with
    var map = {};
    var key = allInputs.get(i).id
    var val = allInputs[i].value;

    // if the key already exists in the map
    if(map[key]){
        map[key].push(val)
    } else { // otherwise add it and set its value to an array of 1 entry
        map[key] = [val]
    }

    // this should now be an object of key values where the values are arrays
    console.log(keys)
  }
});
jQuery(“:input”).change(函数(){
对于(变量i=0;i
我实际上无法用jquery代码测试这个示例,但是我相信它应该可以工作