Select 个来自 javascript 个对象数组的对象子集

Select subset of objects from javascript object array

我有一长串对象:

var myObj = {
  a: "aaa",
  b: "bbb",
  c: "ccc",
  d: "ddd",
  ...
}

我想创建一个新的对象数组,其中包含除前两个对象之外的所有对象:

var myObj2 = {
  c: "ccc",
  d: "ddd",
  ...
}

显然 myObj.slice(2) 不起作用(正如我所希望的那样),我不能 select 它们都按名称 (myObj.c, myObj.d, etc) 因为那里超过 100 个对象,可能还会添加更多对象。

select 对象数组中一系列对象的最佳方法是什么?

假设你有一个像这样的对象数组

myObj = [
                {
                  a: "aaa",
                  b: "bbb",
                  c: "ccc",
                  d: "ddd",
                  ...
                },

                {
                  a: "aaa",
                  b: "bbb",
                  c: "ccc",
                  d: "ddd",
                  ...
                },

                {
                  a: "aaa",
                  b: "bbb",
                  c: "ccc",
                  d: "ddd",
                  ...
                },

                {
                  a: "aaa",
                  b: "bbb",
                  c: "ccc",
                  d: "ddd",
                  ...
                },
            ];

现在运行主数组的循环

在那个循环中遍历数组中的每个对象。 每轮增加一个计数器并检查它是否大于 2,然后再次将其插入主数组 myObj

$.each(myObj, function( index, value ) {
    var counter = 0;
    $.each(value, function( index2, value2 ) {
        counter++;
        if(counter > 2){
            myObj[] = value;
        }
    });

});

if you have different structure for the main array of object then slight change will be there

您可以使用以下方法删除不需要的密钥

var myObj = {a: "aaa",b: "bbb",c: "ccc",d: "ddd"}

function filterObject(obj,filterObject){
    var newObj = {}
    for(key in obj){
        if(!filterObject[key]){
            newObj[key] = obj[key];
        }
    }
    return newObj;
}

console.log(filterObject(myObj,{a:true,b:true}))

示例输出:

{ c: 'ccc', d: 'ddd' }

您可能想要重新组合它,但这是一个通用的方法。

首先,这是带有一些可排序键的对象:

var obj = {B201: "apple", B342: "orange", B123: "pear"}

然后创建排序后前两个键的数组:

var arr = Object.keys(obj).sort().slice(0,2);

这个returns["B123", "B201"].

定义一个根据键名移除对象属性的函数:

function remove (e, i, a) {delete obj[e];};

然后为每个 属性:

调用该函数
arr.forEach(remove);

您应该得到删除了 "first two" 属性的对象:

Object {B342: "orange"}