繁体   English   中英

从多维数组中提取所有名为x的变量-Javascript

[英]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' ]

这是有关MDN中for循环的更多信息

这是使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM