Объединить объект в jquery, но вернуть ненужные данные - PullRequest
0 голосов
/ 14 января 2020

У меня были эти коды для извлечения всех записей в сетке и сохранения в объекте (items) также дополнительный объект с именем (data). Затем я объединяю эти 2 объекта. Но вывод вернется как на картинке ниже. Как убрать те 0[itemID_0]: LA1, чтобы он стал только itemID_0: LA1? Оцените вашу помощь здесь.

enter image description here

update: {
  url:  "./getRecipe.php",
  type: "POST",
  data :function() {

    var gridDataArray = $('#itemGrid').data('kendoGrid').dataSource.data();
    var items = [];
    for ( var i=0; i < gridDataArray.length; i++ ) {    
      items.push({
      ["itemID_" + i]: gridDataArray[i]['itemID'],
      ["itemQty_" + i]: gridDataArray[i]['itemQuantity'],
      ["itemPrice_" + i]: gridDataArray[i]['itemPrice']
      })                 
    };
    console.log(items);

    var data = { 
      method: "editRecipe",
      this_propertyID : $('#thisPropertyID').val(),
    };

    var x = {... data, ... items};
    return x;
  },                         
},
.....

Ответы [ 2 ]

0 голосов
/ 14 января 2020

items - это массив объектов, вам нужен только один объект. Поэтому просто присвойте свойства вместо использования .push().

update: {
  url:  "./getRecipe.php",
  type: "POST",
  data :function() {

    var gridDataArray = $('#itemGrid').data('kendoGrid').dataSource.data();
    var items = { 
      method: "editRecipe",
      this_propertyID : $('#thisPropertyID').val(),
    };
    for ( var i=0; i < gridDataArray.length; i++ ) {    
      items["itemID_" + i] = gridDataArray[i]['itemID'];
      items["itemQty_" + i] = gridDataArray[i]['itemQuantity'];
      items["itemPrice_" + i] = gridDataArray[i]['itemPrice'];                
    }
    console.log(items);

    return items;
  },                         
},
0 голосов
/ 14 января 2020

Если я правильно задал вам вопрос и вам нужно объединить объект с массивом, вы должны выполнить итерацию по массиву и объединить каждый элемент массива с объектом, в результате все элементы массива будут находиться внутри вашего x объекта. Поэтому вместо этого:

var x = {... data, ... items};

просто сделайте следующее:

var x = items.reduce((obj, item) => {
  return {
    ...obj,
    ...item
  }
}, { ...data });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...