使用 javascript 遍历对象内的数组

loop through arrays inside an object with javascript

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

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

我想把它转换成这样:

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

如何使用下划线 js 或 jQuery 或纯 js 来做到这一点?

遍历你的对象并用push

填充你的数组
for(var i = 0; i < object.year.length; i++){
    myArray.push(object.year[i]+"-"+object.month[i]+"-"+object.day[i])
}

https://jsfiddle.net/t4q8t7ht/

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

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

可以把年月日数组给lodash#zip that will transform them to array [[year, month, day], ...], and then Array#map that array with Array#join构造一个['year-month-day', ...]的数组:

_.zip(myArray.year, myArray.month, myArray.day).map(function(arr) {
  return arr.join('-');
});

这个解决方案不需要任何额外的变量,更符合 functional programming 风格。