Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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_Reactjs_Sorting - Fatal编程技术网

Javascript 如果对象具有属性,则对对象数组进行排序

Javascript 如果对象具有属性,则对对象数组进行排序,javascript,arrays,json,reactjs,sorting,Javascript,Arrays,Json,Reactjs,Sorting,我有一个这样的物体: "data": [ { "name": "name1", "price": 4.2, }, { "name": "name2", "price": 12.9, "newOne": {} }, { "name": "name3", "price": 10.9, "newOne": { "

我有一个这样的物体:

"data": [
    {
        "name": "name1",
        "price": 4.2,
    },
    {
        "name": "name2",
        "price": 12.9,
        "newOne": {}
    },
    {
        "name": "name3",
        "price": 10.9,
        "newOne": {
            "code": "02ec583021de8e36ae8006c3caef72d9",
            "name": "מבצע 13"
        }
    },
    {
        "name": "name3",
        "price": 10.9,
    },
],
我尝试了很多方法来分类…需要一些帮助吗

如果这个数组有一个newOne属性,我希望这个对象是数组中的第一个,等等

如果有3个对象的属性为newOne,那么它们将是第一个依次显示的对象,而不是下一个映射对象将位于数组的顶部

如果有什么意义的话,我会用React


谢谢

您可以检查属性并检查delta以进行排序

var数据=[{name:name1,price:4.2},{name:name2,price:12.9,newOne:{},{name:name3,price:10.9,newOne:{code:02ec583021de8e36ae8006c3caef72d9,name:מבצ13},{name:name3,price:10.9}]; data.sorta,b=>b中的'newOne',a中的'newOne'; 控制台日志数据;
.as console wrapper{max height:100%!important;top:0;}您可以检查属性并检查delta以进行排序

var数据=[{name:name1,price:4.2},{name:name2,price:12.9,newOne:{},{name:name3,price:10.9,newOne:{code:02ec583021de8e36ae8006c3caef72d9,name:מבצ13},{name:name3,price:10.9}]; data.sorta,b=>b中的'newOne',a中的'newOne'; 控制台日志数据; .作为控制台包装{max height:100%!important;top:0;}您可以使用数组中的函数来实现您的目标

unshift方法将一个或多个元素添加到数组的开头,并返回数组的新长度

常数数据= [ { 姓名:姓名1, 价格:4.2, }, { 姓名:姓名2, 价格:12.9, newOne:{} }, { 姓名:姓名3, 价格:10.9, 纽恩:{ 代码:02ec583021de8e36ae8006c3caef72d9, 姓名:מבצע13 } }, { 姓名:姓名3, 价格:10.9, }, ] 让结果=[] data.forEachitem=>{ 如果item.newOne result.unshiftitem else result.pushitem } console.logresult您可以使用数组中的函数来实现您的目标

unshift方法将一个或多个元素添加到数组的开头,并返回数组的新长度

常数数据= [ { 姓名:姓名1, 价格:4.2, }, { 姓名:姓名2, 价格:12.9, newOne:{} }, { 姓名:姓名3, 价格:10.9, 纽恩:{ 代码:02ec583021de8e36ae8006c3caef72d9, 姓名:מבצע13 } }, { 姓名:姓名3, 价格:10.9, }, ] 让结果=[] data.forEachitem=>{ 如果item.newOne result.unshiftitem else result.pushitem }
logresult通过将具有set-newOne属性的项视为比不具有set-newOne属性的项的值更大,这应该是可行的

var t={数据:[ { 姓名:姓名1, 价格:4.2, }, { 姓名:姓名2, 价格:12.9, newOne:{} }, { 姓名:姓名3, 价格:10.9, 纽恩:{ 代码:02ec583021de8e36ae8006c3caef72d9, 姓名:מבצע13 } }, { 姓名:姓名3, 价格:10.9, }, ]}; t、 数据。SortFunction A,b{ var aVal=a.newOne==未定义?0:1; var bVal=b.newOne==未定义?0:1; 返回bVal-aVal; };
console.logt.data 通过将具有set-newOne属性的项视为比不具有set-newOne属性的项更大的值,这应该是可行的

var t={数据:[ { 姓名:姓名1, 价格:4.2, }, { 姓名:姓名2, 价格:12.9, newOne:{} }, { 姓名:姓名3, 价格:10.9, 纽恩:{ 代码:02ec583021de8e36ae8006c3caef72d9, 姓名:מבצע13 } }, { 姓名:姓名3, 价格:10.9, }, ]}; t、 数据。SortFunction A,b{ var aVal=a.newOne==未定义?0:1; var bVal=b.newOne==未定义?0:1; 返回bVal-aVal; };
console.logt.data 下面是另一个不使用数组的排序函数:


下面是另一个不使用数组的排序函数:


直到布尔数上的数学将隐含地强制它们为整数。谢谢-布尔数上的DTIL数学将隐含地强制它们为整数。谢谢-D
data.sort((a,b) => a.newOne === b.newOne ? 0 : a.newOne ? -1 : 1)