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

Javascript 基于先前选择的淘汰动态选项

Javascript 基于先前选择的淘汰动态选项,javascript,knockout.js,lodash,Javascript,Knockout.js,Lodash,我想创建一个下拉列表,其中的选项根据两个表之间的匹配方式而变化,基本上所有不匹配的元素都有剩余的值。我有个问题,我不知道从哪里开始 这就是我走了多远 } 结果是所有框都具有相同的值 这是我想到的。我读了几遍,不清楚你想达到什么目的。你只想在项目被选中后从列表中删除它们吗?@Tanner是的,我想删除selected@Jamiec对不起,我想做的是只允许选择不匹配的值,例如abc456,ABC789我想出了一个解决方案 var vm = function () { var listA = ko.

我想创建一个下拉列表,其中的选项根据两个表之间的匹配方式而变化,基本上所有不匹配的元素都有剩余的值。我有个问题,我不知道从哪里开始

这就是我走了多远

}

结果是所有框都具有相同的值


这是我想到的。

我读了几遍,不清楚你想达到什么目的。你只想在项目被选中后从列表中删除它们吗?@Tanner是的,我想删除selected@Jamiec对不起,我想做的是只允许选择不匹配的值,例如abc456,ABC789我想出了一个解决方案
var vm = function () {

var listA = ko.observableArray([
    { toMatch: "abc123", name: "Andrew" }, 
    { toMatch: "abc456", name: "Andrew" }, 
    { toMatch: "abc789", name: "Andrew" }]);

var listB = ko.observableArray([
    { match: ko.observable("abc123"), surname: "Smith" }, 
    { match: ko.observable(""), surname: "Cruse" }, 
    { match: ko.observable(""), surname: "Domnic" }]);

var optionsList = ko.computed(function () {
    var tempArr = [];
    var tempArr_2 = [];
    _.each(listA(), function (item, key, list) {
        var matched = false;
        tempArr.push(item.toMatch);
        _.each(listB(), function (item_1, key_1, list_1) {
            if (matched == false && item.toMatch == item_1.match()) {
                matched = true;
                tempArr_2.push(item.toMatch);
            }
        })
    })
    console.log(_.difference(tempArr,tempArr_2))
    return _.difference(tempArr,tempArr_2);
});

return {
    listA: listA,
    listB: listB,
    optionsList: optionsList
}