向对象响应添加键值

时间:2020-03-11 20:39:06

标签: javascript arrays object key

  $.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 个答案:

答案 0 :(得分:1)

如果我做对了,我认为这很简单。尝试使用这种...表示法。如果不是您想要的,请注释掉它:)

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)

答案 1 :(得分:1)

首先,我认为您的数据具有JSON格式,要将其转换为Object,必须使用 JSON.parse(response);

您正在尝试更改响应对象,但不要这样做,而是创建一个具有相同属性的新对象。如果我正确理解了您的问题,则可以使用

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) }}

答案 2 :(得分:1)

您只是分配给变量,而不是对象属性。您需要创建一个对象,然后将响应分配给该对象的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结构,但这实际上只是一个语法缩进,减少了同一件事的实现。