【问题标题】:Sorting in Javascript for parsed JSON is not working在 Javascript 中对解析的 JSON 进行排序不起作用
【发布时间】:2021-02-27 17:39:42
【问题描述】:

抱歉,我的 Javascript 技能并不出色,因此,有以下问题:

我正在尝试将字符串解析为 JSON 对象,然后对其进行排序。但是,当我执行我得到的函数时,它说排序函数不正确。我的功能如下:

function () {
    var controlerValue = control.val();
    if (multiSelectBehavior != "none") {
        return controlerValue == "" ? [] : JSON.parse(controlerValue).sort(function (a, b) { return a - b });
    }
    return JSON.parse(controlerValue);
}

control.val()(这是一个类型字符串)的例子如下:

“[11,3,4,6,18,9,11,10,13]”

“”(空白)

如上函数所示如何对JSON对象进行排序?

【问题讨论】:

  • "11, 4, 9, 3" is not valid JSON - "\"11, 4, 9, 3\"" 虽然...但是 JSON.parse 将为该 JSON 返回一个 String ...您没有收到错误的事实表明control.val() 可能是 "" .. 但是 JSON.parse 会失败,因为 [] 不是有效的 JSON
  • 为什么使用JSON.parse 根本不controlerValue 只是一个字符串?你就不能controlerValue.split(",").sort(...
  • There is no such thing as a JSON object。一旦 JSON 被解析,它就会变成一个普通的旧 JavaScript 对象(数组,等等)。
  • 如果是"\"11, 4, 9, 3\"",则返回JSON.parse(controlerValue).split(/,\s*/).map(Number).sort((a, b) => a-b),如果是"",则返回[]
  • 然后JSON.parse(controlerValue).sort((a, b) => a-b) 工作(只要数据不包括"[1,2,3]" 中的"

标签: javascript jquery json frontend


【解决方案1】:
  1. 使用substring function 去掉“[”和“]”
  2. 使用split function 获取号码
  3. 使用sort function 对数字进行排序,将正确的函数传递给它以对数字进行排序,然后就完成了。

document.addEventListener("DOMContentLoaded", function(event) {
  var controllerValue = "[11,3,4,6,18,9,11,10,13]";
    var numbers = controllerValue.substring(1, controllerValue.length -1).split(',')
    numbers.sort(function(a, b){return a-b});
    numbers.forEach(number => console.log('number: ' + number));
});

这是working fiddle

【讨论】:

  • HI @Somdip Dey,可能我没理解你的问题吗?
  • 嗨@Somdip Dey,这不是您要找的吗?请尝试给我一个机会来回答我:我花了一些时间来写它。
猜你喜欢
  • 2015-04-08
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 2011-05-12
  • 2013-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多