获取一个Javascript关联数组?

时间:2010-12-09 17:14:01

标签: javascript arrays associative-array

我在Javascript中有一个关联数组对象,我只需要它的一部分。使用常规数组,我只使用切片来获取我需要的部分,但显然这不适用于关联数组。是否有任何内置的Javascript函数,我可以使用它只返回此对象的一部分?如果没有,那么这样做的最佳做法是什么?谢谢!

3 个答案:

答案 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 }