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)