加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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',}
];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读