循环对象中的数组并根据数组值操作对象数据?

时间:2015-07-23 00:45:15

标签: javascript arrays object

我有这个非常痛苦的任务,我想与更有经验的开发人员分享。这似乎很容易,但我认为它真的很棘手。我将在这里向您展示这个对象,因为真正的对象涉及很多其他事情。

这是对象:

var data = {
checkboxes: ["A", "B", "C"],
customers : 1,
expDate: 2015
}

如果我基于data.checkboxes.length做一个简单的for循环,我最终得到这个:

Object {checkboxes: Array["A", "B", "C"], customers: 1, expDate: 2015}
Object {checkboxes: Array["A", "B", "C"], customers: 1, expDate: 2015}
Object {checkboxes: Array["A", "B", "C"], customers: 1, expDate: 2015}

你可以看到每个复选框包含3个项目,这不是我想要的东西。我希望每个对象都有一个复选框数组中的值。

以下是我希望得到的结果:

Object {checkboxes: "A", customers: 1, expDate: 2015}
Object {checkboxes: "B", customers: 1, expDate: 2015}
Object {checkboxes: "C", customers: 1, expDate: 2015}

我不知道,但对我来说这似乎很混乱。也许你们之前已经做过类似的事了。如果你分享你的想法,我将非常感激。

提前致谢

2 个答案:

答案 0 :(得分:1)

我不确定这是不是你想要的,但试试这段代码。

var data = {
  checkboxes: ["A", "B", "C"],
  customers : 1,
  expDate: 2015
}

var result = data.checkboxes.map(function(s) {
  return {
    checkboxes: s,
    customers : data.customers,
    expDate: data.expDate
  };
});

答案 1 :(得分:1)

您需要使用该迭代器来访问复选框的子索引

var data = {
checkboxes: ["A", "B", "C"],
customers : 1,
expDate: 2015
}

console.log(data);

function getFormattedData()
{
   
  document.write("<p>Printing Results:<br/>");
  
  var results = [];
  for(var i = 0; i < data.checkboxes.length; i++)
  {
    results[i] = data.checkboxes[i] + ", " + data.customers + ", " + data.expDate;  
    document.write(results[i] + "<br/>");
  } 
  
  document.write("</p>");
  
  return results; 
}


getFormattedData();


data.customers = 2;


getFormattedData();

编辑:制作可重复使用的函数,在提问者

后发表评论
相关问题