通过属性(如via index)访问数组对象

时间:2016-09-12 12:16:57

标签: javascript

我有一个问题。  我有一个objectc类产品的数组。 是否可以通过他的属性访问数组中的specyfic对象。就像在数组中使用[index]访问一样?像这样:

PRODUCTS[PRODUCTS.product_name=uniquename].data.detail[detail.id = id].ov = parseInt(changeSignal.value);

这是产品。它是和Product对象的数组:

PRODUCTS: Product[] =[];

这是产品类

class Product {
  id:number;
  block: string;
  czas: string;
  data: ProductData
  product_name:string;
}

3 个答案:

答案 0 :(得分:3)

如果你有这样的对象数组:

var products = [{
    id: 1, block: "b1", product_name: "p1"
}, {
    id: 2, block: "b2", product_name: "p2"
}, {
    id: 3, block: "b3", product_name: "p3"
}];

并且您希望获得需要循环遍历数组product_name p3的对象。为此,您可以像这样使用数组函数filter

// List of products
var products = [{
	id: 1, block: "b1", product_name: "p1"
}, {
	id: 2, block: "b2", product_name: "p2"
}, {
	id: 3, block: "b3", product_name: "p3"
}];

// Find product by it's product_name
var prod = products.filter(function(p) {
  return p.product_name === "p3";
});

console.info(prod);

您不能使用您所描述的符号。许多库(如jQuery或下划线)都有辅助函数,可以帮助您在数组中找到正确的对象。

使用下划线完成同样的事情:

// List of products
var products = [{
	id: 1, block: "b1", product_name: "p1"
}, {
	id: 2, block: "b2", product_name: "p2"
}, {
	id: 3, block: "b3", product_name: "p3"
}];

// Find product by it's product_name
var prod = _.findWhere(products, {product_name: "p3"});

console.info(prod);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>

答案 1 :(得分:1)

简短回答并不像你在尝试。 JavaScript不支持具有命名索引(关联数组)的数组。在JavaScript中,数组总是使用带编号的索引,因此方括号内的表达式必须解析为整数。 xxxmatco的答案给出了一个很好的例子,说明了如何通过数组索引访问属性,然后是后续的点符号。

答案 2 :(得分:0)

我不熟悉您的语法,但是Underscore可以为您完成此操作。例如:

   var list = [
        {name: "darin", age: 10},
        {name: "cody", age: 30},
        {name: "dave", age: 40},        
    ]

    var result = _.findWhere(list, {"name": "cody"}) ;

http://underscorejs.org/underscore-min.js