добавить значение ключа в ответ объекта - PullRequest
0 голосов
/ 11 марта 2020
  $.post("./bigData.php", {'username': username}, function(response) {

            console.log(response);
            var bigUser = response[username]; // attempt one
            var bigUser2 = username.response; // attempt two

       });

Мои выше response консоли, как показано ниже:

{"userSumData":[{"id":"slz1","checked":false},{"id":"slz2","checked":false},{"id":"slz3","checked":false},{"id":"slz4","checked":false}, ....."Map":true}

Мой желаемый результат такой:

{"steven":{"userSumData":[{"id":"slz1","checked":false},{"id":"slz2","checked":false},{"id":"slz3","checked":false},{"id":"slz4","checked":false}, ....."Map":true}}

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

Ответы [ 3 ]

1 голос
/ 12 марта 2020

Прежде всего, я думаю, что у вас есть JSON формат ваших данных, чтобы преобразовать их в объект, вы должны использовать JSON .parse (response) ;

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

ES6: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

    let my_object = { inside_object : { steven: { ...response  } }}

ES5: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

    let my_object = { inside_object : { steven: Object.assign({}, response) }}
1 голос
/ 12 марта 2020

Вы просто присваиваете переменную, а не свойство Object. Вам необходимо создать объект, а затем присвоить свой ответ свойству nameVar этого объекта, например:

$.post('bigData.php', {username: username}, response=>{
  const obj = {[nameVar]:response}; // notice that we are creating an object and assigning it a variable called obj which has a steven property
  console.log(obj[nameVar]);
}, 'json');

Разумеется, вы должны понимать асинхронную активность. Другими словами, если вы хотите использовать это obj, оно должно использоваться с телом функции, которое содержит ваш response. Это не будет доступно вне этого. Вы всегда можете создать структуру Promise, но на самом деле это всего лишь синтаксический абзац, уменьшающий реализацию того же самого.

1 голос
/ 11 марта 2020

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

const obj = {"userSumData":[{"id":"slz1","checked":false},{"id":"slz2","checked":false},{"id":"slz3","checked":false},{"id":"slz4","checked":false}],"Map":true};

const name = "steven"
const newObj = {[name]: {...obj}}

console.log(newObj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...