从 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)
不起作用(正如我希望的那样),而且我无法按名称(myObj.c, myObj.d, etc
)选择它们,因为有 100 多个对象,并且可能要添加更多对象。
在对象数组中选择一系列对象的最佳方法是什么?
你可能想要重构它,但这里有一个通用的方法。
首先,下面是带有一些可排序键的对象:
var obj = {B201: "apple", B342: "orange", B123: "pear"}
然后在排序后创建一个包含前两个键的数组:
var arr = Object.keys(obj).sort().slice(0,2);
这将返回["B123", "B201"]
。
定义一个基于键名称删除对象属性的函数:
function remove (e, i, a) {delete obj[e];};
然后为每个属性调用该函数:
arr.forEach(remove);
您应该删除带有"前两个"属性的对象:
Object {B342: "orange"}
您可以使用
以下方法删除您不需要的键
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' }
假设你有一个这样的对象数组
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;
}
});
});
如果你对对象的主数组有不同的结构,那么 会有轻微的变化
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 是否可以创建一个对象,该对象是另一个对象的子集,而不会丢失javascript中的引用
- 玩框架如何获取JPA对象中字段的子集并在模板中处理它
- 查找一个对象是否是 javascript 中另一个对象的子集
- 从 javascript 对象数组中选择对象的子集
- 如何获取参数对象的子集?(关于具有可变大小的参数)
- 从 ES6 中内联的属性子集创建对象
- 在 Javascript/Jquery 中编辑对象的子集化和编辑数组
- 对象数组-选择数组子集,其中对象属性为值数组
- 有没有一种更有效的方法来找到对象的返回子集
- 返回对象及其属性的子集
- 是否有更好/更短的模式来将一个对象的属性子集设置到另一个对象上?
- 带有属性子集的对象数组克隆
- 选择JSON对象的子集&计数