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"}
我有一长串对象:
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"}