SAPUI5-我有一个对象数组,其中的一个属性是“类别”。
例如,说我有两种不同类型的类别,“前店”和“生产区域”,我需要做的是能够获取每个类别的第一个值和每个类别的最后一个值,然后进行设置按钮的启用属性为启用/禁用。
我目前正在使用下划线js(_.each)循环执行其他逻辑,因此可以在此处包括其他逻辑。
不确定Underscore是否为此具有内置功能? 还是有人可以向我指出正确的方法?
我已经获得了想要获得的第一个结果和最后一个结果的第一遍,但是现在需要为每个唯一的类别进行设置。
下面的示例代码:
// Set view data
oViewData.Questions = oQuestions.results;
oViewData.Questions.TotalNumberOfQuestions = oQuestions.results.length;
// Loop Questions, to get Category Desc and Competency Desc values from relevant Sets
_.each(oViewData.Questions, function (result, index) {
// Read and set Category Desc
this.getView().getModel("Survey").read("/CategorySet", {
filters: [new Filter("CategoryId", FilterOperator.EQ, result.CategoryId)],
success: function (oData) {
oViewData.Questions[index]._CategoryDesc = oData.results[0].CategoryDesc;
this.setViewData(oViewData);
}.bind(this),
error: function (oError) {}.bind(this)
});
// Read and set Competency Desc
this.getView().getModel("Survey").read("/CompetencySet", {
filters: [new Filter("CompetencyId", FilterOperator.EQ, result.CompetencyId)],
success: function (oData) {
oViewData.Questions[index]._CompetencyDesc = oData.results[0].CompetencyDesc;
this.setViewData(oViewData);
}.bind(this),
error: function (oError) {}.bind(this)
});
// Set all move up / down buttons to enabled
oViewData.Questions[index]._MoveUpBtn = true;
oViewData.Questions[index]._MoveDownBtn = true;
// if category id is the first one in the list
}.bind(this));
// Overwrite first move up button and last move down btn to disabled
oViewData.Questions[0]._MoveUpBtn = false;
oViewData.Questions.slice(-1)[0]._MoveDownBtn = false;
// Set view data
this.setViewData(oViewData);
答案 0 :(得分:0)
首先,您可以使用本机JavaScript遍历数组。
_.each(array, function(item) {})
与array.forEach(function(item) {})
相同。
第二,您可以针对实际问题使用内置的filter
函数:
const aFrontShopItems = oViewData.Questions.filter(function(oItem) {
return oItem.Category === "Front Shop";
}
如果oViewData.Questions
是一个数组,则传递给filter
的函数将应用于每个元素。如果条件(例如oItem.Category === "Front Shop"
)为true,则将该元素添加到新数组aFrontShopItems
中。显然,您需要再次调用filter来获取生产区域项目。然后,您可以将逻辑应用于新数组的第一和最后一项。