【问题标题】:Add properties in object with the help of a for loop and arrays借助 for 循环和数组在对象中添加属性
【发布时间】:2015-03-28 11:01:06
【问题描述】:

我正在尝试将属性添加到来自数组的对象。 这是我正在使用的代码:

var data = {};
var arr_years = [2013, 2014, 2015];
var arr_quarters2013 = ['Q2', 'Q3', 'Q4'];
var arr_quarters2014 = ['Q1', 'Q2', 'Q3', 'Q4'];
var arr_quarters2015 = ['Q1', 'Q2', 'Q3', 'Q4'];

function createYearObjects() {
    for (var i in arr_years) {
        data[arr_years[i]] = '';
    }
}

我正在尝试将每年的季度从数组添加到对象中的正确属性。假设在 2013 年,我只有 Q2、Q3 和 Q4。所以这是我的第一次尝试。我认为保持简单就可以了:

function fillYearObjectsWithQuarters() {
    for (var prop in data) {
        data[prop] = arr_quarters[prop];
    }
}

由于没有成功,我试图将它作为一个字符串放在一起,但我所有的想法最终都只在节点中给了我字符串 'arr_quarters2013' - 'arr_quarters2015' 这不是我想要的,我想得到对具有该名称的数组的引用!

function fillYearObjectsWithQuarters() {
    for (var prop in data) {
        var temp = prop.toString();
        var tempString = 'arr_quarters'+temp.toString();
        console.log(tempString);
    }
}

还想为什么不试一试并摆脱任何可能的异步。好吧,这个任务不应该让我接近任何异步问题,但仍然尝试过。

createYearObjects();
setTimeout(function() {
    fillYearObjectsWithQuarters();
}, 250);

【问题讨论】:

  • 请添加一个标签,说明您使用的语言,以吸引合适的人。
  • 已编辑 - 谢谢!洛多
  • @nococo:你希望数据最终看起来像这样吗?数据:{"2013":["Q2","Q3","Q4"],"2014":["Q1","Q2","Q3","Q4"],"2015":["Q1 ","Q2","Q3","Q4"]} ?

标签: javascript arrays object for-loop reference


【解决方案1】:

解决方案是根据您提供的参数,因此使用 eval (不太好)... JSFiddle code - eval solution

var data = {};
var arr_years = [2013, 2014, 2015];
var arr_quarters2013 = ['Q2', 'Q3', 'Q4'];
var arr_quarters2014 = ['Q1', 'Q2', 'Q3', 'Q4'];
var arr_quarters2015 = ['Q1', 'Q2', 'Q3', 'Q4'];
var current_year;
var quarter_year;


function createYearObjects(yearsArray) {
    for (var i=0;i<yearsArray.length;i++) {
        current_year = yearsArray[i];
        quarter_year = eval("arr_quarters"+current_year);
        //console.log("quarter_year: ",quarter_year);
        if (current_year) {
            data[current_year] = quarter_year;
        }
    }
}

createYearObjects(arr_years);

var resultDiv = document.getElementById("result");
resultDiv.innerHTML = JSON.stringify(data);

更好的解决方案(没有评估):

JSFiddle code - without eval solution

var data = {};
var arr_years = [2013, 2014, 2015];
var arr_quarters = {}
arr_quarters["2013"] = ['Q2', 'Q3', 'Q4'];
arr_quarters["2014"] = ['Q1', 'Q2', 'Q3', 'Q4'];
arr_quarters["2015"] = ['Q1', 'Q2', 'Q3', 'Q4'];
var current_year;
var quarter_year;

function createYearObjects(yearsArray) {
    for (var i=0;i<yearsArray.length;i++) {
        current_year = yearsArray[i];
        quarter_year = arr_quarters[current_year];
        //console.log("quarter_year: ",quarter_year);
        if (current_year) {
            data[current_year] = quarter_year;
        }
    }
}

createYearObjects(arr_years);

var resultDiv = document.getElementById("result");
resultDiv.innerHTML = JSON.stringify(data);

【讨论】:

  • 非常感谢您的帮助。这正是它应该工作的方式。
猜你喜欢
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 2021-01-26
  • 1970-01-01
  • 2020-04-22
  • 2011-01-16
相关资源
最近更新 更多