Как добавить несколько пар значений внутри одного ключа в словаре в Jquery динамически? - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь создать словарь для метаданных, в списке Sharepoint добавить новый элемент. Я пытаюсь сделать это динамически, а не жестко кодировать имена столбцов.

Вот метаданные свойств исходного элемента, которые должны быть построены.

itemProperties={"__metadata":{"type":"SP.Data.TestingListItem"},"fldname1":"Value1","fldname1":"Value2","fldname3":"value3"};

Это то, что у меня есть до сих пор

var itemProperties={"__metadata":{"type":"SP.Data.TestingListItem"}};

Я запускаю здесь al oop, пока j не скажет 5;

itemProperties=itemProperties+'"'+favorite[j]+'"'+':'+'"'+cells[j]+'"'+','

//favorite has the column name and cells has the values for those columns

Я пытался создать строку и добавить несколько значений, но она не работает так, как предполагалось.

itemProperties.push("Title":"AMA-424"); or 
itemProperties.append("Title":"AMA-424");**

Я пробовал оба, но они недействительны. У меня заканчиваются идеи. Я пытался построить все это как строку, но функция создания элемента списка не будет принимать строку.

Любая помощь или руководство высоко ценится.

1 Ответ

1 голос
/ 11 апреля 2020

Если у вас есть объект, вы можете добавить к нему, добавив больше пар ключ / значение. это делается так:

var obj = {};
obj['myKey'] = "myValue";

Рассмотрим следующий пример.

var itemProperties = {
  "__metadata": {
    "type": "SP.Data.TestingListItem"
  },
  "fldname1": "Value1",
  "fldname1": "Value2",
  "fldname3": "value3"
};

var favs = [
  "Title",
  "Feature",
  "Data"
];

var cells = [
  "AMA-242",
  "One",
  "abc"
];

for (var i = 0; i < favs.length; i++) {
  itemProperties[favs[i]] = cells[i];
}

console.log(itemProperties);

Это пример Vanilla JavaScript. Теперь, если вам нужен пример jQuery, я бы посоветовал использовать $.extend().

Описание: Объединить содержимое двух или более объектов вместе в первый объект.

См. Подробнее: https://api.jquery.com/jquery.extend/

Это немного похоже на .push() для массива, но для объектов. Подумайте о следующем.

$(function() {
  var itemProperties = {
    "__metadata": {
      "type": "SP.Data.TestingListItem"
    },
    "fldname1": "Value1",
    "fldname1": "Value2",
    "fldname3": "value3"
  };

  var favs = {
    title: "AMA-242",
    feature: "One",
    data: 123
  };

  $.extend(itemProperties, favs);

  console.log(itemProperties);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...