我有一个问题。 我有一个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;
}
答案 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"}) ;