偶然的你
2023-04-20 09:54:47
我正在嘗試動態添加一個名為“geometry”的對象及其屬性“x”和“y”,在一個名為“features”的對象數組中。假設 for循環運行 N次而不是 2 次。我想要實現的最終結構是這樣的:{ "type": "features", "features": [{ "geometry": { "x": -8.895197546558027, "y": 38.52577703769191 } }, { "geometry": { "x": -8.877264297084386, "y": 38.53907316236277 } }]}使用我的代碼,我得到了錯誤 - “無法設置未定義的屬性‘幾何’”。function makeOrders(){ try { var orders = { "type": "features" }; orders.features = [{}]; for(var i=0; i<2; i++){ orders.features[i].geometry = {}; orders.features[i].geometry.x = "value_here"; orders.features[i].geometry.y = "other_value_here"; } console.log(orders); } catch (e) { console.error(e); }}
1 回答

慕妹3146593
TA貢獻1820條經驗 獲得超9個贊
orders.features = [{}];
features是一個數組。索引處的值(最初)0是一個空對象。
這是它唯一的價值。
因此,當i您1嘗試設置屬性undefined而不是對象時。
不要用空對象初始化數組。在需要時向數組添加一個對象:
for(var i=0; i<2; i++){
orders.features[i] = {};
…這意味著您在開始之前不需要數組中的空對象:
orders.features = [];
for(var i=0; i<2; i++){
…但是真的沒有必要重復訪問數組的索引和修改對象。
只需創建包含所有數據的對象,然后將push其放到數組的末尾:
orders.features = [];
for(var i=0; i<2; i++){
const object = {
geometry: {
x: "value_here",
y: "other_value_here"
}
};
orders.features.push(object);
}
添加回答
舉報
0/150
提交
取消