Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays - Fatal编程技术网

Javascript 如何从列表中删除未选中的值?

Javascript 如何从列表中删除未选中的值?,javascript,arrays,Javascript,Arrays,我需要从复选框中获取所有选中值,并在元素中返回它们 我有一个密码: this.values = []; if (item.checked) { this.values.push(item.value); } else { this.values.splice(item.value) } return alert(this.values); 问题不多: 如果我选中并取消选中同一项,它每次都会推送到数组,因此可能会有相同的多个值(this.val

我需要从复选框中获取所有选中值,并在元素中返回它们

我有一个密码:

this.values = []; 
if (item.checked) {
        this.values.push(item.value);
    } else {
        this.values.splice(item.value)
    }
 return alert(this.values);
问题不多:

  • 如果我选中并取消选中同一项,它每次都会推送到数组,因此可能会有相同的多个值<代码>(this.values=[1,1,1])
  • Splice不会从此.values中删除未选中的一项.value,它会删除所有值并使此.values为空
    (this.values=[])
  • 我需要的是: 如果我有项目值,例如:1、2、3

    并检查每个项目,我的数组将变成-
    this.values=[1,2,3]


    如果我取消选中项目编号2,
    this.values=[1,3]
    对所有复选框使用公共类,然后使用
    document.querySelectorAll
    获取复选框并将事件侦听器附加到每个复选框

    现在打开
    change
    甚至调用另一个函数,首先
    过滤
    选中的
    复选框,然后使用
    map
    获取复选框值的数组

    let elem=[…document.querySelectorAll('.checkBox')]
    elem.forEach(item=>item.addEventListener('change',getChecked))
    函数getChecked(){
    让getChex=elem.filter(item=>item.checked).map(item=>item.value)
    console.log(getChex)
    }
    
    1.
    2.
    
    3
    对所有复选框使用公共类,然后使用
    document.querySelectorAll
    获取复选框并将事件侦听器附加到每个复选框

    现在打开
    change
    甚至调用另一个函数,首先
    过滤
    选中的
    复选框,然后使用
    map
    获取复选框值的数组

    let elem=[…document.querySelectorAll('.checkBox')]
    elem.forEach(item=>item.addEventListener('change',getChecked))
    函数getChecked(){
    让getChex=elem.filter(item=>item.checked).map(item=>item.value)
    console.log(getChex)
    }
    
    1.
    2.
    3
    再见,您可以这样做:

    this.values = []; 
    if (item.checked) {
        if(!this.values.includes(item.value)) {
           this.values.push(item.value);
        }
    } else {
        if(indexOf(item.value) !== -1){
           this.values.splice(this.values.indexOf(item.value), 1)
        }
    }
    return alert(this.values);
    
    仅当
    this.values
    不包含值时插入
    item.value
    ,并将
    splice
    与索引一起使用(如果项目位于
    this.value
    )。

    Ciao,您可以执行以下操作:

    this.values = []; 
    if (item.checked) {
        if(!this.values.includes(item.value)) {
           this.values.push(item.value);
        }
    } else {
        if(indexOf(item.value) !== -1){
           this.values.splice(this.values.indexOf(item.value), 1)
        }
    }
    return alert(this.values);
    

    仅当
    this.values
    不包含值时插入
    item.value
    ,并使用带索引的
    splice
    (如果项目位于
    this.value
    )。

    ,因为您没有显示html文件。我刚刚发布了代码,供您参考

    function getSelectedCheckboxValues(name) {
        const checkboxes = document.querySelectorAll(`input[name="${name}"]:checked`);
        let values = [];
        checkboxes.forEach((checkbox) => {
            values.push(checkbox.value);
        });
        return values;
    }
    
    如果您正在HTML中编辑js, 替换


    来源:

    因为您没有显示html文件。我刚刚发布了代码,供您参考

    function getSelectedCheckboxValues(name) {
        const checkboxes = document.querySelectorAll(`input[name="${name}"]:checked`);
        let values = [];
        checkboxes.forEach((checkbox) => {
            values.push(checkbox.value);
        });
        return values;
    }
    
    如果您正在HTML中编辑js, 替换


    来源:

    我想这可能适合你:@NikitaMadeev:这只在设置值时有用,但在删除时他需要帮助。@Pritesh??你的问题不完全清楚,你是想从数组中删除项吗?不完全清楚。我需要在数组中存储选中的值。但如果它们未被选中,请将其删除。例如,我选中了项目编号1,arr=[1],取消选中-arr=[]。如果有多项选择-我选中了第1项、第2项和第3项。arr将变为[1,2,3]。我只取消选中数字1,arr转到[2,3]。类似这样的事情我想可能适合你:@NikitaMadeev:这只在设置值时有用,但在删除时他需要帮助。@Pritesh??你的问题不完全清楚,你是想从数组中删除项吗?不完全清楚。我需要在数组中存储选中的值。但如果它们未被选中,请将其删除。例如,我选中了项目编号1,arr=[1],取消选中-arr=[]。如果有多项选择-我选中了第1项、第2项和第3项。arr将变为[1,2,3]。我只取消选中数字1,arr转到[2,3]。这是一个很好的例子,但是如果我的值不是数字,而是单词呢?我试着用数字和值来做这件事,效果很好,但是用单词splice do not remove from ArrayChiao,我用一个对数字和字符串有效的解决方案更新了我的答案。这是一个很好的解决方案,但是如果我的值不是数字,而是单词呢?我试着用数字值来做这件事,效果很好,但是用单词splice do not remove from ArrayChiao,我用一个对数字和字符串有效的解决方案更新了我的答案。