js如何通过堆栈表

时间:2018-10-04 08:06:47

标签: javascript jquery html

该数组如何表? 通过堆栈,而不是循环! 看起来像这样

enter image description here

var infos = {
  title: [{
    'field': 'fish',
    'label': 'fish'
  }, {
    'field': 'dog',
    'label': 'dog'
  }, {
    'field': "cat",
    'label': 'cat'
  }],
  datas: []
}

for (var i = 0; i < 10; i++) {
  infos.datas.push({
    fish: 3 * i,
    dog: 3 * i + 1,
    cat: 3 * i + 2
  })
}

3 个答案:

答案 0 :(得分:3)

Question was not clear But if i understand correctly it should be something like [this]

http://plnkr.co/edit/nC9PLMKb5fPw5rNOM8sD

答案 1 :(得分:0)

您可以通过迭代拥有的标签和数据来生成表。

function getTable(object) {
    return [
        '<table>',
        '<tr>' + object.title.map(({ label }) => `<th>${label}</th>`).join('') + '</tr>',
        object.data
            .map(r => `<tr>${Object.values(r).map(v => `<td>${v}</td>`).join('')}</tr>`)
            .join(''),
        '</table>'
    ].join('');
}
var infos = { title: [{ field: 'fish', label: 'fish' }, { field: 'dog', label: 'dog'}, { field: 'cat', label: 'cat' }] };

infos.data = Array.from({ length: 10 }, (_, i) => Object.assign(...infos.title.map(({ field }, j, { length }) => ({ [field]: i * length + j }))));

console.log(infos);
document.body.innerHTML += getTable(infos);

答案 2 :(得分:0)

  

非循环

是的,我们可以!

let infos = {
  title: [{
    'field': 'fish',
    'label': 'fish'
  }, {
    'field': 'dog',
    'label': 'dog'
  }, {
    'field': "cat",
    'label': 'cat'
  }],
  datas: []
}

/* using map() instead of for-loop */
infos.datas = Array(10)  // array of 10 elements
  .fill('')              // fill with anything
  .map((_, idx) => {     // for each element...
    return {             // ...generate desired object
      fish: 3 * idx,
      dog: 3 * idx + 1,
      cat: 3 * idx + 2
    }
  })

console.log(infos) // result same as before

希望这会有所帮助。 干杯,