在对象内循环数组,并根据数组值操作对象数据

Looping an array within an object and manipulating the object data based on array values?

本文关键字:数组 对象 操作 数据 循环      更新时间:2023-09-26

我有这个非常痛苦的任务,我想与更有经验的开发人员分享。这看起来很简单,但我认为这真的很棘手。我在这里只展示这个对象,因为真实的对象包含很多其他的东西。

这是对象:

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}
我不知道,但对我来说,这似乎很令人困惑。也许你们之前已经做过类似的事情了。如果你能分享你的想法,我将不胜感激。

Thanks in advance

你需要使用这个迭代器来访问复选框的子索引

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();

编辑:变成可重复使用的函数,当提问者

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

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
  };
});