Javascript 如果属性匹配,则返回数组中的对象
以下是场景:Javascript 如果属性匹配,则返回数组中的对象,javascript,knockout.js,underscore.js,Javascript,Knockout.js,Underscore.js,以下是场景: function SelectedProducts(listOfSelectedProductIds){ for (var index = 0; index < listOfSelectedProductIds.length; index++) { var currentItem = listOfSelectedProductIds[index]; var desiredProduct = _.contains(listOfAllPo
function SelectedProducts(listOfSelectedProductIds){
for (var index = 0; index < listOfSelectedProductIds.length; index++) {
var currentItem = listOfSelectedProductIds[index];
var desiredProduct = _.contains(listOfAllPossibleProducts, currentItem);
if (desiredProduct === true) {
return listOfAllPossibleProducts[index];
}
}
}
- 有一个名为
的参数包含 所有选定的IDListofSelectedProductId
- 还有另一个名为“所有可能的产品列表”的列表,它是
包含
。该对象的列表
包含一个对象
,ProductId
和ProductName
。它看起来像这样:ProductCode
function SelectedProducts(listOfSelectedProductIds){
for (var index = 0; index < listOfSelectedProductIds.length; index++) {
var currentItem = listOfSelectedProductIds[index];
var desiredProduct = _.contains(listOfAllPossibleProducts, currentItem);
if (desiredProduct === true) {
return listOfAllPossibleProducts[index];
}
}
}
- 我需要循环查看所选产品ID的
列表。如果
与ProductId
所有可能产品列表中的
匹配,则我需要返回该对象ProductId
function SelectedProducts(listOfSelectedProductIds){
for (var index = 0; index < listOfSelectedProductIds.length; index++) {
var currentItem = listOfSelectedProductIds[index];
var desiredProduct = _.contains(listOfAllPossibleProducts, currentItem);
if (desiredProduct === true) {
return listOfAllPossibleProducts[index];
}
}
}
功能选择产品(选择产品ID列表){
对于(var index=0;index
当前发生的事情:
function SelectedProducts(listOfSelectedProductIds){
for (var index = 0; index < listOfSelectedProductIds.length; index++) {
var currentItem = listOfSelectedProductIds[index];
var desiredProduct = _.contains(listOfAllPossibleProducts, currentItem);
if (desiredProduct === true) {
return listOfAllPossibleProducts[index];
}
}
}
- 我的循环正在按预期获取所选id,即
,但currentItem
总是返回false包含(…)
function SelectedProducts(listOfSelectedProductIds){
for (var index = 0; index < listOfSelectedProductIds.length; index++) {
var currentItem = listOfSelectedProductIds[index];
var desiredProduct = _.contains(listOfAllPossibleProducts, currentItem);
if (desiredProduct === true) {
return listOfAllPossibleProducts[index];
}
}
}
- 在中查找对象的最佳方法是什么
,这些产品具有与我的所有可能的产品的列表
列表中的ProductIds
ProductIds
过滤器如何
:
var result = _.filter(listOfAllPossibleProducts, function (el) {
return _.contains(listOfSelectedProductIds, el.id);
});
或非下划线方法:
var result = listOfAllPossibleProducts.filter(function (el) {
return listOfSelectedProductIds.indexOf(el.id) > -1;
});
使用
过滤器如何
var result = _.filter(listOfAllPossibleProducts, function (el) {
return _.contains(listOfSelectedProductIds, el.id);
});
或非下划线方法:
var result = listOfAllPossibleProducts.filter(function (el) {
return listOfSelectedProductIds.indexOf(el.id) > -1;
});
创建另一个结构productsByProductId
一次强>
var productsByProductId = {};
listOfAllPossibleProducts.forEach(p => {
productsByProductId[p.ProductId()] = p
});
也许还有一个辅助函数
function getProductById(id){
return productsByProductId[id];
}
并使用它将ID映射到节点
var selectedProducts = listOfSelectedProductIds.map(getProductById)
创建另一个结构productsByProductId
一次强>
var productsByProductId = {};
listOfAllPossibleProducts.forEach(p => {
productsByProductId[p.ProductId()] = p
});
也许还有一个辅助函数
function getProductById(id){
return productsByProductId[id];
}
并使用它将ID映射到节点
var selectedProducts = listOfSelectedProductIds.map(getProductById)
哇,这是一个圆滑的回答。。。谢谢你的帮助!!哇,这是一个圆滑的回答。。。谢谢你的帮助!!