如何从oData结果将其他字段推送到javascript数组

时间:2019-01-23 01:17:29

标签: javascript arrays odata sapui5 metadata

我在javascript中有一个随机数组

var dataModel = [];

我查询了一个oData url,我想将结果填充到我的dataModel []数组中。而且,对于每个项目,我想添加其他字段

odataMod.read(
        "/",
        null, [],
        true,
        function (oData, oResponse) {
            var data = oData.results;

            data.forEach(function (item) {
                //Add the object 
                dataModel.push(item);
                //I want to add additional fields to every object in data 
                dataModel.push(item.ObjectType = "Chevron");
                dataModel.push(item.HierarchyNodeLevel = 0);
                dataModel.push(item.IsCriticalPath = false);
                dataModel.push(item.IsProjectMilestone = false);
                dataModel.push(item.DrillDownState = "expanded");
                dataModel.push(item.Magnitude = 5);

...

注意:ObjectType,DrillDownState,Magnitude(等)是我要添加其值Chevron,0,false(等)的字段

下面是当前结果的屏幕截图:

enter image description here

但是我想在每个项目中而不是外部添加其他属性,这是我做错了吗?换句话说,我希望其他字段位于元数据中

以下是我要在其中添加项目的sc:

enter image description here

1 个答案:

答案 0 :(得分:2)

也许我误会了,但我认为您只希望响应中的每个项目一次按下。其他推送应替换为项目副本上的设置属性...

        data.forEach(function (item) {
            item.ObjectType = "Chevron";
            item.HierarchyNodeLevel = 0;
            item.IsCriticalPath = false;
            item.IsProjectMilestone = false;
            item.DrillDownState = "expanded";
            item.Magnitude = 5;
            dataModel.push(item);  // note: just one push

            // alternatively, so as to not mutate item...
            // const dataModelItem = Object.assign({
            //    ObjectType: "Chevron",
            //    HierarchyNodeLevel: 0,
            //    etc.
            // }, item);
            // dataModel.push(dataModelItem);
        }