使用javascript循环遍历对象内的数组

时间:2016-02-27 12:07:37

标签: javascript jquery arrays object underscore.js

我有一个包含3个数组的对象,如下所示:

 {
  "year": [
    "1980",
    "1970"
  ],
  "month": [
    "01",
    "01"
  ],
  "day": [
    "1",
    "1"
  ]
}

我想把它转换成这样的东西:

['1980-01-1','1970-01-1']

如何使用下划线js或jQuery或纯js?

3 个答案:

答案 0 :(得分:2)

循环覆盖您的对象并使用for(var i = 0; i < object.year.length; i++){ myArray.push(object.year[i]+"-"+object.month[i]+"-"+object.day[i]) }

填充数组
offset

https://jsfiddle.net/t4q8t7ht/

答案 1 :(得分:1)

此提案使用Array#map()和数组作为键。

&#13;
&#13;
var data = { "year": ["1980", "1970"], "month": ["01", "01"], "day": ["1", "1"] },
    result = function (data) {
        var i = 0,
            keys = ['year', 'month', 'day'],
            result = [];
        while (i < data[keys[0]].length) {
            result.push(keys.map(function (k) {
                return data[k][i];
            }).join('-'));
            i++;
        }
        return result;
    }(data);

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以将年,月和日数组提供给lodash#zip,然后将其转换为数组['year-month-day', ...],然后Array#map将该数组转换为Array#join以构建数组_.zip(myArray.year, myArray.month, myArray.day).map(function(arr) { return arr.join('-'); });

Placeholder

此解决方案不需要任何其他变量,而且更多是functional programming样式。