gpt4 book ai didi

javascript - 如何使用 JavaScript 有选择地将用户输入存储在 HashMap 中

转载 作者:行者123 更新时间:2023-12-03 01:55:13 31 4
gpt4 key购买 nike

我有一个算法,它采用 JSON 文件作为参数,如下所示:

{"quiz": {                
"algorithm_id_1": "4",
"algorithm_id_2": "2",
"algorithm_id_3": "3",
// ...

algorithm_id是输入字段的id,后面的数字是用户为该输入字段选择的值(其中大部分是 slider )。

我的问题如下:

  • 如果一个输入与另一个输入具有相同的 ID,如何防止重叠? (例如 "algorithm_id_1": "2", "3" 而不是 "algorithm_id_1": "2", ... "algorithm_id_1: "3"

我目前正在获取每个输入字段的 ID 及其相应的值,但每个响应都存储为自己的对象。

const allInputs = $(":input");

// retrieve
for (var i = 0; i < allInputs.length; i++) {
allInputs[i].value = localStorage.getItem(i);
}

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

// console.log($(":input").get(i).id);
var map = {};
var vals = allInputs[i].value;
var keys = allInputs.get(i).id;
map[keys] = vals;
console.log(keys)
}
});

上下文:我确信有更简单的方法可以做到这一点,但我仅限于我们当前的堆栈(Node.js 和 EJS),并且对我们正在使用的内容没有太多发言权。此函数的目的是收集用户的响应,然后将其输入推荐算法。任何和所有的帮助将不胜感激。

最佳答案

您可以更改数据结构,使键数组的值如下所示:

{
quiz: {
algorithm_id_1: [2,3],
algorithm_id_1: [1,6],
...
}
}

为此,您需要修改更新数据结构的方式。

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

在您的示例中,每次发生更改时都会重新创建 map ,这并不理想,但我不会在这里解决这个问题。

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 代码测试该示例,但我相信它应该可以工作。

关于javascript - 如何使用 JavaScript 有选择地将用户输入存储在 HashMap 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50264025/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com