php – 排序常见的属性数组
发布时间:2020-12-13 22:34:25 所属栏目:PHP教程 来源:网络整理
导读:我正在努力解决一个我确定以前已经解决过的阵列问题.我能想到的最好的比喻是产品比较功能,其中选择了2-3种产品,并列出了它们的特征供用户比较. 我有2-3个特征阵列.阵列可以具有相同的特征.我需要并排显示数组表,其中元素按“最常见”排序.因此,如果所有三个
我正在努力解决一个我确定以前已经解决过的阵列问题.我能想到的最好的比喻是产品比较功能,其中选择了2-3种产品,并列出了它们的特征供用户比较.
我有2-3个特征阵列.阵列可以具有相同的特征.我需要并排显示数组表,其中元素按“最常见”排序.因此,如果所有三个阵列都具有相同的特性,那么它将位于顶部.然后将列出两个类似的特征,等等.如果两个阵列共享一个特征,则第三个阵列将具有一个空白单元格. 后端是用PHP编写的.前端是Javascript.我正在使用Underscore来实现其他功能,因此它的数组功能可用. 我无法理解为完成这项工作我必须做的事情的组合!任何帮助是极大的赞赏! 解决方法
我设法找到了一个我认为可以解决这个问题的解决方案,使用mainegreen的建议,使用二级结构记录每个类别的频率,以及使用此频率数组的值进行比较的自定义排序函数.以下示例实现;
function getCategories(products) { var categories = [],frequency = {}; for (var i = 0; i < products.length; i++) { for (var c in products[i]) { if (products[i].hasOwnProperty(c)) { if (frequency.hasOwnProperty(c)) { frequency[c]++; } else { categories.push(c); frequency[c] = 1; } } } } categories.sort(function (a,b) { return frequency[b]-frequency[a]; }); return categories; } 这适用于如下的一系列产品; var products = [ { cat1: 'val1',cat2: 'val1',},{ cat2: 'val2',cat3: 'val2',{ cat2: 'val3',cat3: 'val3',cat4: 'val3',} ]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |