Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建函数对列表中的参数进行排序_Javascript - Fatal编程技术网

Javascript 如何创建函数对列表中的参数进行排序

Javascript 如何创建函数对列表中的参数进行排序,javascript,Javascript,您好,我想根据排序参数在列表中的出现次数为列表中的排序参数创建一些内容 所有参数用一个分隔 let list = "abcd1; abcd4; abcd4; abcd9; abcd2; abcd5" 列表可以是5个参数,比如100或243 我认为它可以使用两个循环,一个循环查看i元素是否重复,并将数组[i]与数组[j]进行比较,您可以使用临时数组创建对象,然后稍后重新分配给主数组 但我不知道怎么做 你的名单 通过在“;”处拆分字符串来创建新列表 声明一个空对象,遍历新列表

您好,我想根据排序参数在列表中的出现次数为列表中的排序参数创建一些内容

所有参数用一个
分隔

let list = "abcd1; abcd4; abcd4; abcd9; abcd2; abcd5"

列表可以是5个参数,比如100或243

我认为它可以使用两个循环,一个循环查看i元素是否重复,并将数组[i]与数组[j]进行比较,您可以使用临时数组创建对象,然后稍后重新分配给主数组

但我不知道怎么做

  • 你的名单
  • 通过在“;”处拆分字符串来创建新列表
  • 声明一个空对象,遍历新列表的所有元素,并将它们添加为对象的键。如果对象中不存在键,则将值设置为1,否则,如果存在键,则将值添加1
  • 获取数组中对象的键,最后对数组进行排序,同时将对象``obj``中的值作为比较参数发送。因为我们想根据该值在字符串中出现的次数进行排序

  • 从字符串中的最少出现次数到最大出现次数排序

    您已经尝试了什么?显然,首先需要从字符串等创建一个数组。一个数组具有唯一值,另一个数组具有所有结果。然后可以使用两个循环,其中使用unqique值来计算该值在非唯一值中的时间。不管怎样,我不会把它给你的。您可能会为此使用类似split()、filter()和find()的函数。。
    let list = "abcd1; abcd4; abcd4; abcd9; abcd2; abcd5"
    
    let newList = list.split(';')
    
    // newList = ["abcd1", " abcd4", " abcd4", " abcd9", " abcd2", " abcd5"]
    
    let obj = {}
    
    for (let i of newList) {
        let newI = i.trim() // trim() to remove spaces or new line characters 
    
        // check if newI is already present in the object, i.e. we've seen it before
        // if that's the case then it must have a value so increment that value by 1
        if (newI in obj) {
            obj[newI] += 1
        }
    
        // if newI is not present in the object then we're seeing it for the first time.
        // so set its value as 1
        else {
            obj[newI] = 1
        }
    }
    
    // obj = {abcd1: 1, abcd4: 2, abcd9: 1, abcd2: 1, abcd5: 1}
    
    let arr = Object.keys(obj)
    
    // arr = ["abcd1", "abcd4", "abcd9", "abcd2", "abcd5"]
    
    arr.sort((a, b) => obj[a] - obj[b])
    
    // arr = ["abcd1", "abcd9", "abcd2", "abcd5", "abcd4"]