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

时间:2015-09-02 15:13:14

标签: javascript multidimensional-array

我已经在SO和其他地方搜索过我能找到答案的所有内容,但却找不到答案,这主要归功于我有限的JS知识。

有人能告诉我如何从类似于以下数据的数组中提取值(dataLayer中的增强型电子商务数组);

var products = [
{ brand: "brandx", category: "categorya", name: "name123" },
{ brand: "brandy", category: "categoryb", name: "name345" }
];

我想在这种情况下提取名称,最后得到另一个只包含值的数组,例如: [name123,name345]。我想再次将其推入dataLayer,但我想我自己可以做到这一点。

我确实取得了一些成功,但这只是在选择名字值时。

提前感谢您提供任何帮助

的帮助

马特

5 个答案:

答案 0 :(得分:7)

.map就是为了这个!

var names = products.map(function(product) { return product.name });

答案 1 :(得分:1)

假设你的名字属性总是存在,那就简单了:

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,你可以使用map,如@tymeJV所指出的那样:)

答案 2 :(得分:1)

This was already answered here.

You could use .map或for循环:

var namesArray = [];
for(index in products) {
  namesArray.push(products[index].name);
}
namesArray;
=> [ 'name123', 'name345' ]

Here is more information on for in loops from MDN

答案 3 :(得分:0)

这是使用forEach的示例:

&#13;
&#13;
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)
&#13;
&#13;
&#13;

答案 4 :(得分:-1)

您要做的是将数组传递给map函数。使用underscore.js的示例

var newArray=_.map(products, function(value){return value.name})

map函数接受一个数组(或对象),通过一个iteree运行每个值,然后返回一个新数组。