使用 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])
}
此提案使用 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 风格。
我有一个包含 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])
}
此提案使用 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 风格。