我在Javascript中有一个关联数组对象,我只需要它的一部分。使用常规数组,我只使用切片来获取我需要的部分,但显然这不适用于关联数组。是否有任何内置的Javascript函数,我可以使用它只返回此对象的一部分?如果没有,那么这样做的最佳做法是什么?谢谢!
答案 0 :(得分:4)
没有一种好方法来“切片”对象,不,但如果你真的不得不这样做,你可以这样做:
var myFields = ['field1', 'field2', 'field3'];
var mySlice = {};
for (var i in myFields) {
var field = myFields[i];
mySlice[field] = myOriginal[field];
}
答案 1 :(得分:2)
我使用的功能很少:
/**
* Slices the object. Note that returns a new spliced object,
* e.g. do not modifies original object. Also note that that sliced elements
* are sorted alphabetically by object property name.
*/
function slice(obj, start, end) {
var sliced = {};
var i = 0;
for (var k in obj) {
if (i >= start && i < end)
sliced[k] = obj[k];
i++;
}
return sliced;
}
答案 2 :(得分:2)
我创建了this gist就是这样做的。它返回一个只提供参数的新对象,并使旧对象保持原样。
if(!Object.prototype.slice){
Object.prototype.slice = function(){
var returnObj = {};
for(var i = 0, j = arguments.length; i < j; i++){
if(this.hasOwnProperty(arguments[i])){
returnObj[arguments[i]] = this[arguments[i]];
}
}
return returnObj;
}
}
用法:
var obj = { foo: 1, bar: 2 };
obj.slice('foo'); // => { foo: 1 }
obj.slice('bar'); // => { bar: 2 }
obj; // => { foo: 1, bar: 2 }