我有一个像这样的对象数组:
var objectArray = [{id_5:"100"},
{id_1:"300"},
{id_2:"500"},
{id_4:"700"},
{id_3:"200"}];
像这样的普通数组:
var normalArray = ["id_2","id_5","id_4"];
如果normalArray中有匹配的ID,我想从objectArray中减去每个元素。然后我想按对象的值排序新创建的数组(最低值是第一个)。
因此,对于上面的示例,结果将是:
var newObjectArray = [{id_3:"200"},
{id_1:"300"}];
没有jQuery可以做到这一点吗?
我见过类似这样的问题:Removing object from one array if present in another array based on value但我还没有找到合适的答案。是否可以进行比较和删除,同时仍然保持键:值对完好无损?提前感谢您对此的任何帮助!
答案 0 :(得分:3)
您应该使用filter方法,该方法接受callback
函数作为参数。
此外,您必须使用Object.keys()
方法才能获取object
中每个objectArray
的密钥。
要检查来自element
的{{1}}是否未显示在objectArray
中,您应该使用indexOf()
方法。
要实现objectArray
数组,您必须使用sort()
方法。
sorted
答案 1 :(得分:1)
您可以先使用filter()
从其他数组中删除带有键的对象,然后排序以按对象值对结果数组进行排序。
var objectArray = [{id_5:"100"},{id_1:"300"},{id_2:"500"},{id_4:"700"},{id_3:"200"}];
var normalArray = ["id_2","id_5","id_4"];
var newArray = objectArray
.filter(e => !normalArray.includes(Object.keys(e)[0]))
.sort((a, b) => a[Object.keys(a)[0]] - b[Object.keys(b)[0]])
console.log(newArray)