Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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 从数组生成select选项,并通过与另一个数组比较选择多个元素(jQuery)_Javascript_Jquery_Arrays_Loops - Fatal编程技术网

Javascript 从数组生成select选项,并通过与另一个数组比较选择多个元素(jQuery)

Javascript 从数组生成select选项,并通过与另一个数组比较选择多个元素(jQuery),javascript,jquery,arrays,loops,Javascript,Jquery,Arrays,Loops,我想做的是从JavaScript数组中为多选下拉列表生成选项元素。然后在下拉列表中选择与另一个数组(示例中的结果数组)中的值相同的每个选项 问题是,当结果数组有多个元素时,原始选项在HTML中与结果数组中的元素数相乘 我理解为什么会发生这种情况,但我似乎找不到比我目前使用的解决方案更好的解决方案,它是这样的: var options = ['Some value', 'Another value', 'Third value', 'Something completely different']

我想做的是从JavaScript数组中为多选下拉列表生成选项元素。然后在下拉列表中选择与另一个数组(示例中的结果数组)中的值相同的每个选项

问题是,当结果数组有多个元素时,原始选项在HTML中与结果数组中的元素数相乘

我理解为什么会发生这种情况,但我似乎找不到比我目前使用的解决方案更好的解决方案,它是这样的:

var
options = ['Some value', 'Another value', 'Third value', 'Something completely different'],
results = ['Some value', 'Another value'],
selectHtml;

$.each( options, function( index, value ) {
    var option = value;

    $.each( results, function( index, value ) {
        if ( option === value ) {
            selectHtml += '<option selected="selected" value="' + option + '">' + option + '</option>';
        }
        else {
            selectHtml += '<option value="' + option + '">' + option + '</option>';
        }
    });
});
你可以在这里找到一个活生生的例子:


我想要完成的是相同的事情,但是没有元素的乘法。

问题是,您正在迭代options数组中每个元素的results数组。您可以使用indexOf方法确定当前选项是否在结果数组中:

这是一个例子


但是,请记住,这在较旧的浏览器中是不可用的,因此您可能希望包含polyfill。MDN在上面的链接中提供了一个选项。

问题在于,您正在迭代选项数组中每个元素的结果数组。您可以使用indexOf方法确定当前选项是否在结果数组中:

这是一个例子

但是,请记住,这在较旧的浏览器中是不可用的,因此您可能希望包含polyfill。MDN在上面的链接中提供了一个。执行数组搜索

var 
options = ['Some value', 'Another value', 'Third value', 'Something completely different'],
results = ['Some value', 'Another value'],
selectHtml;

$.each( options, function( index, value ) {
    var option = value;
    if (results.indexOf(option) == -1){
        selectHtml += '<option value="' + option + '">' + option + '</option>';
    } else {
        selectHtml += '<option selected="selected" value="' + option + '">' + option + '</option>';
    }
});

$('#test').html( selectHtml );
执行数组搜索

var 
options = ['Some value', 'Another value', 'Third value', 'Something completely different'],
results = ['Some value', 'Another value'],
selectHtml;

$.each( options, function( index, value ) {
    var option = value;
    if (results.indexOf(option) == -1){
        selectHtml += '<option value="' + option + '">' + option + '</option>';
    } else {
        selectHtml += '<option selected="selected" value="' + option + '">' + option + '</option>';
    }
});

$('#test').html( selectHtml );

生成select,然后执行以下操作如何

 $("#selectId").val(results);

生成select,然后执行以下操作如何

 $("#selectId").val(results);

是的,但是还有其他情况迫使我实现循环解决方案。嗯,然后我在这里严重浪费了我的时间。是的,但是还有其他情况迫使我实现循环解决方案。嗯,然后我在这里严重浪费了我的时间。