编写一个函数来迭代和提取内部数组的对象
Write a function to iterate and pluck an inner array's objects
我怎么能用vanilla js或者lodash来returnScene.data[i].trends变成一个newArr
输出应如下所示:
var newArr = superFunction();
console.log(newArr);
=> [{id:100},{id:101},{id:200},{id:201}]
数据集:
Scenes.data = [
{
id: 0,
trends: [
{
id: 100,
},
{
id: 101,
}]
},
{
id: 2,
trends: [
{
id: 200,
},
{
id: 201,
}]
}]
你可以这样做:
var newArr = [].concat.apply([], Scenes.data.map(function(v){ return v.trends }));
对于 lodash,您可以使用 pluck 和 flattern:
var result = _(scenes).pluck('trends').flattern().value();
或者减少(普通 js):
var result = scenes.reduce(function(prev, curr) {
return prev.concat(curr.trends);
}, []);
你可以这样做:
var newArr = [];
Scenes.data.forEach(function(x) {
x.trends.forEach(function(trend) {
var obj = {};
for(var key in trend) {
if (trend.hasOwnProperty(key)) {
obj["" + key + ""] = trend[key];
}
}
newArr.push(obj);
});
});
我怎么能用vanilla js或者lodash来returnScene.data[i].trends变成一个newArr
输出应如下所示:
var newArr = superFunction();
console.log(newArr);
=> [{id:100},{id:101},{id:200},{id:201}]
数据集:
Scenes.data = [
{
id: 0,
trends: [
{
id: 100,
},
{
id: 101,
}]
},
{
id: 2,
trends: [
{
id: 200,
},
{
id: 201,
}]
}]
你可以这样做:
var newArr = [].concat.apply([], Scenes.data.map(function(v){ return v.trends }));
对于 lodash,您可以使用 pluck 和 flattern:
var result = _(scenes).pluck('trends').flattern().value();
或者减少(普通 js):
var result = scenes.reduce(function(prev, curr) {
return prev.concat(curr.trends);
}, []);
你可以这样做:
var newArr = [];
Scenes.data.forEach(function(x) {
x.trends.forEach(function(trend) {
var obj = {};
for(var key in trend) {
if (trend.hasOwnProperty(key)) {
obj["" + key + ""] = trend[key];
}
}
newArr.push(obj);
});
});