Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Json_Sorting - Fatal编程技术网

Javascript 为什么我的比较函数不按位置对对象进行排序并返回未排序的相同对象数组?

Javascript 为什么我的比较函数不按位置对对象进行排序并返回未排序的相同对象数组?,javascript,arrays,json,sorting,Javascript,Arrays,Json,Sorting,我有JSON数据 [ { "name" : "", "location" : "home" }, { "name" : "", "location" : "office" } ] 我没有这个 var = data [ { "name" : "", "location" : "home" }, { "name" : "", "location" : "office" }

我有JSON数据

[
 {
   "name" : "",
   "location" : "home"
 },
 {
   "name" : "",
   "location" : "office"
 }
]
我没有这个

var = data [
     {
       "name" : "",
       "location" : "home"
     },
     {
       "name" : "",
       "location" : "office"
     }
    ]
我不能使用函数比较(a,b)对数据进行排序。这不起作用,因为我不能调用data.sort(compare),如果我的数据不是JSON格式的,我可以调用它

如果我可以使用比较,我可以使用以下答案:

这个解决方案对我不起作用。我必须使用FS从.json打开数据

let data = fs.readFileSync('./app/data/testData.json');
现在,我想以alpha顺序使用obj.location提取数据。我试着问这个问题,人们用javascript解决方案(compare函数)把它划掉。如果您能向我解释如何在JSON数据中使用该函数,我将使用该解决方案。我已经尝试过实现它,但它什么都不做,并且让我的数据保持相同的顺序

我可以将JSON数据转换为能够使用比较函数的格式吗

编辑以显示我当前拥有/尝试过的代码 我是基于上面的解决方案,它不会对数据进行排序

function compare(a,b) {
   if (a.location < b.location)
     return -1;
   if (a.location > b.location)
     return 0;
   return 0;
 }

let dataSort = fs.readFileSync('./app/data/testData.JSON');
let dataParse = JSON.parse(dataSort);

dataParse.sort(compare);

console.log(dataParse);  
功能比较(a、b){
如果(a位置b位置)
返回0;
返回0;
}
让dataSort=fs.readFileSync('./app/data/testData.JSON');
让dataParse=JSON.parse(dataSort);
dataParse.sort(比较);
log(dataParse);

这将返回完全相同的数据集,没有按菜单排序。

var myObject=JSON.parse(在此处加载文件数据)

原始问题:您只是想执行
let data=fs.readFileSync('./app/data/testData.json');data=JSON.parse(数据)
您了解JSON是JavaScript对象的字符串表示吗?没有JSON对象。JSON是字符串格式。在不将其转换为对象数组的情况下对其进行排序将非常困难,不值得任何人花费时间。如果您可以转换它,那么这就是您链接的答案的副本。否则。。。祝你好运。你的对象没有
菜单
属性。。。