在KO中,可以根据数组中的属性从对象数组返回Distinct列表。
我有一个'Dialog'数组,它有一个对象集合,对象中的一个属性叫做'photo'。我想从阵列中拉出不同的照片。
到目前为止我的代码:
my.vm.uniquePhotos = ko.computed(function () {
return ko.utils.arrayGetDistinctValues(my.vm.Dialog());
}, my.vm);
上面的代码返回了数组中的所有“照片”,但我只想要不同的照片。
<div id="participants" data-bind='foreach: uniquePhotos'>
<img data-bind="attr: { src: photo }" />
</div>
此致 熔体
答案 0 :(得分:3)
要获得仅包含唯一照片的数组,您可以:
my.vm.uniquePhotos = ko.computed(function () {
var photos = my.vm.Dialog();
var o = {};
var r = [];
for(var i=0; i<photos.length;i++)
o[photos[i].photo] = photos[i].photo;
for(i in o)
r.push(o[i]);
}, my.vm);
或者,如果photo属性是对象中唯一需要的信息,则可以使用arrayMap获取包含url的数组,并使用arrayGetDistinctValues。
my.vm.uniquePhotosUrl = ko.computed(function () {
return ko.utils.arrayGetDistinctValues(
ko.utils.arrayMap(my.vm.Dialog(), function(p){
return p.photo;
})
);
}, my.vm);
观点:
<div id="participants" data-bind='foreach: uniquePhotosUrl '>
<img data-bind="attr: { src: $data}" />
</div>
我希望它有所帮助。