是否可以創建一個只允許某個對象存儲在其中的數組?有沒有一種方法可以將元素添加到我可以覆蓋的數組中?只能存儲一種類型的對象的數組?
0
A
回答
1
不是直接。但是你可以隱藏在一個封閉的陣列,並只提供自定義的API來訪問它:
var myArray = (function() {
var array = [];
return {
set: function(index, value) {
/* Check if value is allowed */
array[index] = value;
},
get: function(index) {
return array[index];
}
};
})();
使用它像
myArray.set(123, 'abc');
myArray.get(123); // 'abc' (assuming it was allowed)
2
是的,你可以,只是覆蓋陣列的推陣列(讓我們說你想存儲的數字比執行以下操作:
var myArr = [];
myArr.push = function(){
for(var arg of arguments) {
if(arg.constructor == Number) Array.prototype.push.call(this, arg);
}
}
簡單地改變Number
你想匹配任何構造此外,我可能會添加和else語句左右如果這就是你想要的,就會引發錯誤。
UPDATE:
使用Object.observe(目前僅適用於Chrome提供):
var myArr = [];
Array.observe(myArr, function(changes) {
for(var change of changes) {
if(change.type == "update") {
if(myArr[change.name].constructor !== Number) myArr.splice(change.name, 1);
} else if(change.type == 'splice') {
if(change.addedCount > 0) {
if(myArr[change.index].constructor !== Number) myArr.splice(change.index, 1);
}
}
}
});
現在ES6還有,你應該能夠做到以下代理服務器:
var myArr = new Proxy([], {
set(obj, prop, value) {
if(value.constructor !== Number) {
obj.splice(prop, 1);
}
//I belive thats it, there's probably more to it, yet because I don't use firefox or IE Technical preview I can't really tell you.
}
});
+0
但是,當數組設置爲arr [3] =「不是數字」時,這會工作嗎? – RedHatter 2015-04-05 22:19:52
+0
我更新了我的答案 – 2015-04-06 09:24:19
相關問題
- 1. 無法在名稱處存儲_SwiftValue類型的對象。只能存儲NSNumber,NSString,NSDictionary和NSArray類型的對象。'
- 2. 只包含某種類型的對象的數組
- 3. swift - 在單個數組中存儲多類型對象數組
- 4. 在同一個對象存儲多種類型
- 5. 如何將不同的對象存儲在數組中並獲取某種類型的對象?
- 6. 使用NoRM在MongoDB的一個集合中存儲多種類型的對象
- 7. Java數組來存儲一個類的多個對象
- 8. 泛型類型數組的一種可能的方法?
- 9. 數組存儲任何對象也是AnyObject類型
- 10. (setValue :)無法在pictureURL中存儲_SwiftValue類型的對象。只能類型的NSNumber,NSString的,NSDictionary中,和NSArray的
- 11. AS3:只允許一定數量的某種類型的對象進入一個數組
- 12. 靜態的NSMutableDictionary只能存儲一個對象
- 13. std :: tr1 :: function - 在常見容器中存儲各種類型的函數對象
- 14. 如何將對象數組上傳到另一種類型的C#中的對象數組?
- 15. 多維數組存儲多種數據類型
- 16. 存儲MongoDB ObjectIds數組的類型?
- 17. 兩種不同對象類型的多維數組
- 18. 如何檢查對象是否是某種類型的數組?
- 19. php - 存儲包含對象的數組
- 20. ArrayList只存儲一個對象
- 21. 不能存儲一個對象到數組中? C++
- 22. 多種類型的數組
- 23. 泛型集合 - 確保集合只包含一種類型的對象?
- 24. 存儲多種類型的字符
- 25. HTML5 localStorage vs sesionStorage vs另一種類型的數據存儲性能
- 26. 如何訪問存儲在類中的數組中的對象?
- 27. 在.NET 3.5中存儲3種數據類型的列表/元組有什麼好的對象
- 28. 如何指定對象的類型是幾種可能的對象類型之一?
- 29. 如何爲一種類型的對象創建一個類?
- 30. 數組或其他集合,我可以存儲多種類型
不,沒有。抱歉。 – Scimonster 2015-04-05 19:02:50
不是直接操作數組,而是創建自己的函數或操作數組的方法,並且可以在將數據實際放入數組之前調整數據。 – jfriend00 2015-04-05 19:15:57