如何将每第2次递增的值添加到数组的每个对象?

时间:2018-10-13 11:59:11

标签: javascript arrays

我遇到了一些数学问题。我有这个简单的数组:

var x = [
    {
        'index':0,
        "place": 1,
    },
    {
        'index':1,
        "place": 4,
    },
    {
        'index':0,
        "place": 9,
    },
    {
        'index':1,
        "place": 9,
    },
    {
        'index':0,
        "place": 9,
    },
];

如何遍历此数组并将元素(在这种情况下称为row)添加到数组中的每个对象?最终应该看起来像这样:

var x = [
    {
        'index':0,
        "place": 1,
        "row":"0",
    },
    {
        'index':1,
        "place": 4,
        "row":"0",
    },
    {
        'index':0,
        "place": 9,
        "row":"1",
    },
    {
        'index':1,
        "place": 9,
        "row":"1",
    },
    {
        'index':0,
        "place": 9,
        "row":"2",
    },
    {
        'index':0,
        "place": 9,
        "row":"2",
    },
];

谢谢您的任何建议。我需要用它来在NativeScript中创建动态网格布局。

2 个答案:

答案 0 :(得分:6)

只需将索引除以二:

x.forEach((e, i) => e.row = ~~(i / 2));

PS: ~~Math.floor的非常丑陋的缩写...

答案 1 :(得分:0)

尝试类似的方法:)

var x = [
        {
            'index':0,
            "place": 1,
        },
        {
            'index':1,
            "place": 4,
        },
        {
            'index':0,
            "place": 9,
        },
        {
            'index':1,
            "place": 9,
        },
        {
            'index':0,
            "place": 9,
        },
         {
            'index':0,
            "place": 1,
        },
        {
            'index':1,
            "place": 4,
        },
        {
            'index':0,
            "place": 9,
        },
        {
            'index':1,
            "place": 9,
        },
        {
            'index':0,
            "place": 9,
        },
    ];

    var j = -1
    x.forEach(function(e, i) {
    if(i % 2 == 0) {
     j++
    }
      e['row'] = j
    })

    console.log(x)