将2个可观察数组与不同结构进行比较,并选择匹配行

时间:2013-04-05 10:22:44

标签: knockout.js

假设我有2个可观察数组

var data1 = [{
name1: "one",
id: 1,
IsSelected: false
  }, 
{
name1: "two",
id: 2,
IsSelected: false
 }, 
{
name1: "three",
id: 3,
IsSelected: false
}];

var data2 = [{
 name2: "five"
 }, 
 {
 name2: "two"
 }, 
 {
 name2: "three"
}];

从2个数组中可以看到2行匹配“2”和“3”。这些匹配的行绑定到复选框并标记为已选中。

现在我想要的是如果行匹配,那么如果行匹配,它应该将IsSelected属性设置为true。

我知道flattening数组会使2个数组的结构相同。但我想要的是比较2个数组并在数据匹配时将IsSelected属性标记为true。

fiddle这可以减少你的困惑。

我真的没有想法来实现这个目标。在小提琴中你可以看到2个盒子被检查,但它旁边显示为假。它应该显示为真。

1 个答案:

答案 0 :(得分:1)

可能this会有所帮助

self.isDuplicated = function (item) {
    var data2 = viewModel.dataTwo();
    for (var index = 0; index < data2.length; index++) {
        if (data2[index].name == item.name) return true;
    }
    return false;
};