下划线有一些功能可以将嵌套的对象数组提取到新数组吗?
Underscore have some function to extract nested array of objects to new array?
我有:
[{
"id": 1,
"listForExtract": [{
"value1": "1A",
"value2": "2A"
}, {
"value1": "1B",
"value2": "2B"
}, ]
},
{
"id": 2,
"listForExtract": [{
"value1": "1C",
"value2": "2C"
}, {
"value1": "1D",
"value2": "2D"
}, ]
}]
我想将 listForExtract
中的对象提取到一个新数组中,例如使用一些传递 ID 的下划线函数:
类似于:_.extractNestedArrayFrom(myArray, 'listForExtract', {'id':2})
[{
"value1": "1A",
"value2": "2A"
}, {
"value1": "1B",
"value2": "2B"
}]
var myArray = [{
"id": 1,
"listForExtract": [{
"value1": "1A",
"value2": "2A"
}, {
"value1": "1B",
"value2": "2B"
}, ]
},
{
"id": 2,
"listForExtract": [{
"value1": "1C",
"value2": "2C"
}, {
"value1": "1D",
"value2": "2D"
}, ]
}];
var result = _.map(_.where(myArray, {
'id': 2
}), function(elem) {
return elem.listForExtract
});
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>
你甚至不需要 underscore
。
以下代码应该适合您。
myArray.filter(function(){
return o.id==2
}).map(function(o){
return o.listForExtract
});
您可以使用 where, pluck and flatten:
var result = _.chain(data)
.where({id:2})
.pluck('listForExtract')
.flatten()
.value()
Where 查找数组中 id
为 2 的所有项目,然后 pluck 提取 listForExtract
。然后使用 Flatten 将结果展平为一个数组
我有:
[{
"id": 1,
"listForExtract": [{
"value1": "1A",
"value2": "2A"
}, {
"value1": "1B",
"value2": "2B"
}, ]
},
{
"id": 2,
"listForExtract": [{
"value1": "1C",
"value2": "2C"
}, {
"value1": "1D",
"value2": "2D"
}, ]
}]
我想将 listForExtract
中的对象提取到一个新数组中,例如使用一些传递 ID 的下划线函数:
类似于:_.extractNestedArrayFrom(myArray, 'listForExtract', {'id':2})
[{
"value1": "1A",
"value2": "2A"
}, {
"value1": "1B",
"value2": "2B"
}]
var myArray = [{
"id": 1,
"listForExtract": [{
"value1": "1A",
"value2": "2A"
}, {
"value1": "1B",
"value2": "2B"
}, ]
},
{
"id": 2,
"listForExtract": [{
"value1": "1C",
"value2": "2C"
}, {
"value1": "1D",
"value2": "2D"
}, ]
}];
var result = _.map(_.where(myArray, {
'id': 2
}), function(elem) {
return elem.listForExtract
});
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>
你甚至不需要 underscore
。
以下代码应该适合您。
myArray.filter(function(){
return o.id==2
}).map(function(o){
return o.listForExtract
});
您可以使用 where, pluck and flatten:
var result = _.chain(data)
.where({id:2})
.pluck('listForExtract')
.flatten()
.value()
Where 查找数组中 id
为 2 的所有项目,然后 pluck 提取 listForExtract
。然后使用 Flatten 将结果展平为一个数组