在knockout JS中,我想从我的集合中找出第一个重复对象并将该对象作为模态返回。我必须根据我的条件检查第一个数组和第二个数组中的第一个重复对象。尝试过 _findWhere & _.Some & _.each 没有任何效果。有人可以帮忙
这里——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));
});
});
};
最佳答案
如何将第一个重复项的检查合并到映射中?类似于:
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);
我将其理解为“如果我们不更新记录,则可能会设置第一个重复项。”这是一个 fiddle :http://jsfiddle.net/ge1abt6a/
关于javascript - 查找从一个集合到另一个集合的重复对象 - 在knockout JS中使用2个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38232182/