从一个集合中查找重复对象到另一个集合 - 在knockout JS中使用2个数组

时间:2016-07-06 19:24:22

标签: javascript jquery arrays knockout.js

在淘汰JS中我想从我的集合中找出第一个重复的对象并将该对象作为模态返回。我必须根据我的条件从第一个数组aginst 2nd Array检查第一个重复对象。试过_findWhere& _Some& _没有任何效果。有人可以帮忙吗

这里 - MyMainModal是我的Moda,它将有多个对象

      self.dupRecord= function (MyMainModal) {
        var Modaldata= ko.mapping.toJS(MyMainModal);
            return _.some(Modaldata, function (MD1) {
                return _.some(Modaldata, function (MD2) {
                    if ((MD1.ID!== MD2.Id) &&
                        (MD1.Name === MD2.name));                    
                });
            });
        };

1 个答案:

答案 0 :(得分:0)

如何将第一个副本的检查合并到映射中?类似的东西:

function Child(data) {
  ko.mapping.fromJS(data, {}, this);
};
var model = {
  children: [{
    id: '1',
    name: 'Billy'
  }, {
    id: '2',
    name: 'Susy'
  }]
};
var mapping = {
  children: {
    key: function(data) {
      return ko.utils.unwrapObservable(data.id);
    },
    create: function(options) {
      console.log('creating ' + options.data.name, options.parent);
      var newChild = new Child(options.data);
      if(options.parent.firstDuplicate() === undefined)
        options.parent.children().forEach(function(child) {
          if(child.name() === newChild.name())
            options.parent.firstDuplicate([child, newChild]);
        });
      return newChild;
    },
    update: function(options) {
      console.log(' updating ' + options.data.name);
      return options.target;
    }
  }
};

var vm = {
  children: ko.observableArray(),
  firstDuplicate: ko.observable()
};
ko.mapping.fromJS(model, mapping, vm);
ko.applyBindings(vm);

model.children.push({
  id: 3,
  name: 'Billy'
});
setTimeout(function() {
  console.log('--remapping--');
  ko.mapping.fromJS(model, mapping, vm);
}, 2000);

我读到这一点,“如果我们没有更新记录,可能会设置第一个副本。”这是一个小提琴:http://jsfiddle.net/ge1abt6a/