首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据另一个数组中的对应值对一个数组进行排序?

如何根据另一个数组中的对应值对一个数组进行排序?
EN

Stack Overflow用户
提问于 2014-11-25 00:23:00
回答 4查看 130关注 0票数 4

我有两个数组。第一个是字符串的数组,第二个是字符串出现次数的数组。

我正试图在第一个数组中得到前10位最常见的单词。我对它进行了排序,但不知怎么的,我只按字母顺序排序,第二个数组分别对应于它们出现的次数。

如何将第二个数组从最大排序到最低排序,同时对与第二个数组顺序匹配的第一个数组进行排序。

我很难将我的json插入到我的高级图表中,我找到了为什么,数字应该放在方括号中[]我已经尝试过将[]插入到1中,但是仍然不起作用--请看我的帖子--我编辑它

这是我应该在高图表中插入的数据。

代码语言:javascript
运行
复制
[{"name":"#murrayftw","data":[46]},
 {"name":"#job","data":[37]},
 {"name":"#jobs","data":[25]},
 {"name":"#favnashvine","data":[16]},
 {"name":"#rollersmusicawards","data":[14]},
 {"name":"#soa","data":[13]},
 {"name":"#tweetmyjobs","data":[12]},
 {"name":"#sman1boyolangu","data":[12]},
 {"name":"#supernatural200thepisode","data":[12]},
 {"name":"#veteransday","data":[12]}]
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-25 00:53:30

这将创建一个对象数组,然后按计数排序。

代码语言:javascript
运行
复制
var hashtags = {},
    counts = [];

for (var i in data)
{
    if(data[i].lang == "en")
    {   
        for (var j in data[i].entities.hashtags)
        {
            var text = data[i].entities.hashtags[j].text;

            if(text) {
                if(hashtags[text]) {
                     hashtags[text].data[0]++;
                } else {
                     hashtags[text] = {
                         name: text,
                         data: [1]
                     };
                     counts.push(hashtags[text]);
                }
            }
        }
    }
}

counts.sort(function(a, b) { return b.data[0] - a.data[0]; });
票数 0
EN

Stack Overflow用户

发布于 2014-11-25 00:32:21

尝试在.sort()调用!看看这里的文件。中使用自定义的比较函数

在这个例子中(可能不是最好的方法),我会:

  1. 有未排序的“计数”数组
  2. 有未排序的字阵列
  3. 对单词数组进行排序(使用下面描述的自定义函数)
  4. 对计数数组进行排序(没有自定义函数)

自定义比较函数可能是一个简单的查找,并返回未排序计数数组中的相应值。(即,如果单词"a“为第0索引,且其相关计数量位于计数数组的第0索引中,则返回计数)

票数 1
EN

Stack Overflow用户

发布于 2014-11-25 01:04:12

如果不能使用对象,请尝试使用嵌套的for循环:

代码语言:javascript
运行
复制
var array1 = ['z', 'd', 'e', 'f', 't'], arr1Count = array1.length;
var array2 = [1, 12, 5, 7, 3];
var sortedArray2 = array2.sort(function(x, y) {return y - x});

var i, j, sortedArray1 = [];

for (i = 0; i < arr1Count; i++) {
    for (j = 0; j < arr1Count; j++) {
        if (array2[j] === sortedArray2[i]) sortedArray1.push(array1[j]); //iterate through the unsorted numeric array (array2) and when it matches the sortedArray2, push this index of array1 into the sortedArray1
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27116696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档