[英]Underscore.js - Looping through Object Array
I have the following object array: 我有以下对象数组:
var products = [
{
id: 1,
name: "Product 1",
subTypes: [
{
id: 1,
name: "Product 1 - Sub Type 1"
},
{
id: 2,
name: "Product 1 - Sub Type 2"
}
]
},
{
id: 2,
name: "Product 2",
subTypes: [
{
id: 1,
name: "Product 2 - Sub Type 1"
},
{
id: 2,
name: "Product 2 - Sub Type 2"
}
]
}
];
Using underscore.js why does the following dot notation not log anything to console: 使用underscore.js,为什么以下点符号不将任何内容记录到控制台:
_.each(products.subTypes, function(subType) {
console.log(subType.name);
});
I can only get it to work by doing nesting the foreach loops as follows? 我只能通过嵌套如下的foreach循环来使其正常工作吗?
_.each(products, function (product) {
_.each(product.subTypes, function (subType) {
console.log(subType.name);
});
});
你可以检查一下
console.log('Subtypes:', products.subTypes.name);
If you would like to access product.subTypes you have to extract them from your objects first. 如果要访问product.subTypes,则必须先从对象中提取它们。
Here is how you do it. 这是您的操作方式。 3 example functions: pure javascript, ES6, underscoreJS.
3个示例函数:纯javascript,ES6,underscoreJS。
// pure JS function pureJsloop(data) { var result = []; for (i = 0; i < data.length; i++) { var product = data[i]; result.push(product.subTypes); } return result[0]; } // ES6 function ES6loop(data) { // We are returning reduced array return data.reduce((previous, product) => { return previous = [ ...previous, product.subTypes ]; }, [])[0]; } // Underscore function underscoreLoop(data) { return _.reduce(data, function(previous, product){ return previous = [ ...previous, product.subTypes ]; }, [])[0]; } var products = [ { id: 1, name: "Product 1", subTypes: [ { id: 1, name: "Product 1 - Sub Type 1" }, { id: 2, name: "Product 1 - Sub Type 2" } ] }, { id: 2, name: "Product 2", subTypes: [ { id: 1, name: "Product 2 - Sub Type 1" }, { id: 2, name: "Product 2 - Sub Type 2" } ] }]; //console.log(pureJsloop(products)); //console.log(ES6loop(products)); console.log(underscoreLoop(products));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.