[英]Create a new property from an array with null value in an array of objects in javascript
[英]javascript - create new (global) objects with names from array
我試圖用數組名稱創建新對象。 沒有數組,我會做:
var object_bruno = new Object();
var object_carlos = new Object();
var object_luci = new Object();
所以我最終會得到3個新對象。 但是,為什么不使用循環來做到這一點呢?這使得以后添加更多對象變得更加容易。 所以我試了一下:
// an array full of object names
var obj_arr = [ "object_bruno", "object_carlos", "object_luci"];
// Method one:
for (x in obj_arr) {
alert(obj_arr[x]); // right names shown
var obj_arr[x] = new Object(); //syntax error, dosent work??
};
// Method two:
obj_arr.forEach(function(func_name) {
alert(func_name); // right names
var func_name = new Object(); // no objects are created ???
});
基本上,我更喜歡使用方法二。 我喜歡它,因為我可以用同樣的方法加滿它們? 充滿希望嗎? 任何想法出了什么問題嗎?
您可以在數組上循環並為每個項目分配一個new Object
,如下所示:
for (var i = 0, l = obj_arr.length; i < l; i++) {
obj_arr[i] = {};
}
更新
您也可以通過將屬性應用於global
對象(例如window
來以這種方式進行操作:
var people = [ "object_bruno", "object_carlos", "object_luci"];
for (var i = 0, l = people.length; i < l; i++) {
global[people[i]] = {};
}
使用此解決方案可使對象成為全局對象,因此您可以像object_bruno
一樣使用它們。
另一個改進可以是使用ECMAScript 2015的computed propertiey names
:
var people = [ "bruno", "carlos", "luci"], prefix = 'object_';
for (var i = 0, l = people.length; i < l; i++) {
global[prefix + people[i]] = {};
}
這允許具有更有意義的數組。
注意, global
可以是瀏覽器中的window
對象,也可以是NodeJS中的global
對象,或者在其他環境中也可以是其他對象。
因為您通過聲明來創建新變量
obj_arr.forEach(function(func_name) {
alert(func_name); // right names
var func_name = new Object(); // no objects are created ???
});
嘗試這個
obj_arr.forEach(function(func_name) {
alert(func_name); // right names
func_name = new Object(); // no objects are created ???
});
var obj_arr = [ "object_bruno", "object_carlos", "object_luci"];
obj_arr.forEach(function(func_name, index, arr) {
arr[index] = {};
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.