[英]Extract all variables named x from multi dimensional array - Javascript
我已经搜索了在SO和其他地方可以使用的所有内容,但找不到答案,这主要是由于我对JS的了解有限。
谁能告诉我如何从类似于以下内容的数组中提取值(dataLayer中的增强型电子商务数组);
var products = [
{ brand: "brandx", category: "categorya", name: "name123" },
{ brand: "brandy", category: "categoryb", name: "name345" }
];
在这种情况下,我只想提取名称,最后得到另一个仅包含[name123,name345]中值的数组。 我想再次将其推送到dataLayer中,但是我想自己可以做到这一点。
我确实取得了一些成功,但这仅在于选择名字值。
预先感谢您提供任何帮助
马特
.map
为此!
var names = products.map(function(product) { return product.name });
假设您的name属性始终存在,就这么简单:
var products = [
{ brand: "brandx", category: "categorya", name: "name123" },
{ brand: "brandy", category: "categoryb", name: "name345" }
];
var result = [];
for (var i = 0; i < products.length; i++){
result.push(products[i].name);
}
如果不关心版本9以下的IE,您也可以使用地图,如@tymeJV指出的那样:)
您可以使用.map或for循环:
var namesArray = [];
for(index in products) {
namesArray.push(products[index].name);
}
namesArray;
=> [ 'name123', 'name345' ]
这是使用forEach
的示例:
var products = [ { brand: "brandx", category: "categorya", name: "name123" }, { brand: "brandy", category: "categoryb", name: "name345" } ]; var names = []; products.forEach(function(x){ names.push(x.name) }) console.log(names)
您要做的是将数组传递给map函数。 使用underscore.js的示例
var newArray=_.map(products, function(value){return value.name})
映射函数获取一个数组(或对象),通过迭代器运行每个值,然后返回一个新数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.