我有一个这样的对象数组:
var objectArray = [{id_5:"100"},
{id_1:"300"},
{id_2:"500"},
{id_4:"700"},
{id_3:"200"}];
Run Code Online (Sandbox Code Playgroud)
像这样的普通数组:
var normalArray = ["id_2","id_5","id_4"];
Run Code Online (Sandbox Code Playgroud)
如果normalArray中有匹配的ID,我想从objectArray中减去每个元素。然后,我想按对象的值(最低的值排在第一位)对新创建的数组进行排序。
因此,对于上面的示例,结果将是:
var newObjectArray = [{id_3:"200"},
{id_1:"300"}];
Run Code Online (Sandbox Code Playgroud)
没有jQuery是否可以做到这一点?
我已经看到过类似的问题:如果一个数组基于值存在于另一个数组中,则从一个数组中删除对象,但我一直无法找到有效的答案。是否可以像这样进行比较并删除,同时仍然保持key:value对不变?在此先感谢您的任何帮助!
您应该使用过滤器方法,该方法接受函数作为参数callback。
此外,您必须使用Object.keys()方法才能获取每个objectin的密钥objectArray。
要检查elementfrom是否objectArray未出现在 中objectArray,您应该使用indexOf()method.
要实现sorted数组,就必须使用sort()方法。
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(function(item){
return normalArray.indexOf(Object.keys(item)[0]) == -1;
}).sort(function(a,b){
return a[Object.keys(a)[0]] - b[Object.keys(b)[0]];
});
console.log(newArray);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3243 次 |
| 最近记录: |