與Array slice()類似,是否可以切片對象(不通過屬性循環)?是否可以切片對象?
簡化的例子:
var obj = {a:"one", b:"two", c:"three", d:"four"};
例如:獲取第2個屬性
var newObj = {a:"one", b:"two"};
與Array slice()類似,是否可以切片對象(不通過屬性循環)?是否可以切片對象?
簡化的例子:
var obj = {a:"one", b:"two", c:"three", d:"four"};
例如:獲取第2個屬性
var newObj = {a:"one", b:"two"};
「全部」 的主流瀏覽器(在Firefox 36,鉻40,歌劇27測試)保持key order in objects雖然這是not a given in the standard如約瑟夫Legény在comments指出:
> Object.keys({a: 1, b: 2})
["a", "b"]
> Object.keys({b: 2, a: 1})
["b", "a"]
因此,理論上你可以使用循環切片物體:
function objSlice(obj, lastExclusive) {
var filteredKeys = Object.keys(obj).slice(0, lastExclusive);
var newObj = {};
filteredKeys.forEach(function(key){
newObj[key] = obj[key];
});
return newObj;
}
var newObj = objSlice(obj, 2);
或者例如以下劃線的omit
function:
var newObj = _.omit(obj, Object.keys(obj).slice(2));
我正要寫這個問題。 _.omit,將完美工作 – lonewarrior556 2016-03-01 16:44:41
技術上對象表現得像哈希表。因此,沒有固定的輸入順序,前兩個輸入並不總是相同的。所以,這是不可能的,尤其是沒有迭代對象的條目。
var obj = {a:"one", b:"two", c:"three", d:"four"};
delete obj['d'];
console.info(obj)
/*
sorry i forgot to put quote around d property name
o/p
[object Object] {
a: "one",
b: "two",
c: "three"
}
*/
'Object.key'把它變成一個數組... – 2015-03-02 10:41:51
[Object.keys](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) – Hacketo 2015-03-02 10:41:55
你會如何定義'第一'兩個屬性? Javascript對象的屬性沒有任何固有的順序。 http://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order – 2015-03-02 10:41:57