从JavaScript对象中筛选特定属性
Filter a specific property out of a JavaScript object
我有以下JavaScript
对象:
Object {article: jQuery.fn.init[11], thesis: jQuery.fn.init[6], chapter: jQuery.fn.init[0], book: jQuery.fn.init[0], proceedings: jQuery.fn.init[0]…}
article: jQuery.fn.init[11]
book: jQuery.fn.init[0]
chapter: jQuery.fn.init[0]
proceedings: jQuery.fn.init[0]
thesis: jQuery.fn.init[6]
translated_title: jQuery.fn.init[1]
__proto__: Object
thesis
属性是jQuery
对象,更详细地说:
thesis: jQuery.fn.init[6]
0: div#supervisors.thesis-related.supervisors.thesis-related.dynamic-field-list.ui-sortable
1: div.row.thesis-related
2: div.row.thesis-related
3: select#degree_type.form-control.thesis-related.degree_typeform-control.thesis-related
4: input#university.form-control.thesis-related.universityform-control.thesis-related
5: select#license.form-control.thesis-related.licenseform-control.thesis-related
context: document
length: 6
prevObject: jQuery.fn.init[1]
selector: "*[class~="thesis-related"]"
__proto__: Object[0]
我想过滤初始对象,以获得除论文之外的所有属性,但不使用delete
运算符,也不更改对象本身。
编辑:问题如下所述出现,目的是不使用if
语句,并每次使用deposition_type
值筛选对象。
如果您想在没有delete
的情况下完成此操作,基本上是对每个属性的复制操作:
var dest = {};
var name;
for (name in source) {
if (name !== "thesis" && source.hasOwnProperty(name)) {
dest[name] = source[name];
}
}
或者,如果你想在上面获得所有ES5:
var dest = Object.keys(source).reduce(function(memo, name) {
if (name !== "thesis") {
memo[name] = source[name];
}
return memo;
}, {});
请注意,这是一个"肤浅"的副本;如果source
上的任何属性引用对象(包括数组),则dest
上的该属性也将引用同一对象。
要复制对象,请使用jQuery.extend
:
var secondObject = jQuery.extend({}, firstObject);
delete secondObject.thesis;
firstObject.thesis; // still exists
secondObject.thesis; // does not exists
或者重新创建一个对象:
var secondObject = {};
for(var i in firstObject) {
if(i !== 'thesis' && firstObject.hasOwnProperty(i)) {
secondObject[i] = firstObject[i];
}
}
编写一个克隆方法cloneObj=函数(ele,sExcludeProp){var tmp;if(数组的实例){tmp=[];对于(var i=0;i}}}其他{tmp=ele;}返回tmp;}
相关文章:
- 如何筛选对象的数组属性
- 如何基于多个属性筛选记录并获取计数
- AngularJS-筛选对象中的选定属性
- 从骨干集合筛选模型,然后为这些模型设置属性
- 如何按对象数组中的数组属性进行筛选
- 如何筛选所有属性都是对象的对象
- 未捕获的类型错误: 无法读取未定义的属性“筛选器”
- JQuery多属性筛选器不起作用
- AngularJS ng通过对象中的一个属性和一个文本框重复筛选
- 根据下拉列表中所选值的其他属性筛选本地剑道数据源
- 如何根据多个数据属性筛选搜索结果
- 按属性的属性筛选ngOptions
- 根据自定义属性筛选SELECT选项
- 使用JavaScript按属性筛选网店产品
- 如何通过包含特定字符串的属性筛选JSON数据
- 数组中.按对象属性筛选,参数未定义
- 通过空属性筛选数组
- 如何使用计算属性筛选数组
- 如何根据数据属性筛选选择器结果
- 如何根据属性筛选和排列对象数组