简体   繁体   English

Javascript想要将对象推入数组

[英]Javascript want to push objects into array

I want to push objects into array (mainArr) in JS.我想在 JS 中将对象推送到数组(mainArr)中。 Below is my code:下面是我的代码:

var object = {1: 15, 2: 30};
var mainArr = ['settingsData'];

var values = Object.values(object);
var final = [];
var counter = 0;
var portion = {};

for (var key in object) {
  if (counter !== 0 && counter % 1 === 0) {
    final.push(portion);
    mainArr.push(portion)
    portion = {};
  }
  portion[key] = values[counter];
  counter++
}
final.push(portion);
mainArr.push(portion)
console.log(mainArr)

I see the output in the console like: ["settingsData", {1: 15}, {2: 30}]我在控制台中看到如下输出: ["settingsData", {1: 15}, {2: 30}]

But I want the output like:但我想要这样的输出:

{ "settingsData":[{"1":"4"},{"2":"3"}] } { "settingsData":[{"1":"4"},{"2":"3"}] }

You could map single key/value pairs as new entry.您可以将单个键/值对映射为新条目。

 var object = { 1: 15, 2: 30 }, settingData = Object.entries(object).map(keyValue => Object.fromEntries([keyValue])), result = { settingData }; console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

Answer has already been accepted, but OP did request i put my comment as an answer.答案已被接受,但 OP 确实要求我将我的评论作为答案。

This simplifies your approach drastically:这大大简化了您的方法:

// Create a new object to start with: 
let main = {"settingsData": []};

// Then push to the inner array:
main.settingsData.push({1:15});

If I understood it correctly, this would work:如果我理解正确,这将起作用:

var object = {1: 15, 2: 30};
var mainArr = {'settingsData': []};

var values = Object.values(object);
var final = [];
var counter = 0;
var portion = {};

for (var key in object) {
  if (counter !== 0 && counter % 1 === 0) {
    final.push(portion);
    mainArr.push(portion)
    portion = {};
  }
  portion[key] = values[counter];
  counter++
}
final.push(portion);
mainArr.settingsData.push(portion)
console.log(mainArr)

EDIT: (Explanaition added as asked in comments)编辑:(根据评论中的要求添加说明)

What you were doing is push each element into the already existing array containing ['settingsData'] .您所做的是将每个元素推送到包含['settingsData']现有数组中。 But what you were doing was to add items to the array located in the key settingsData .但是您所做的是向位于键settingsData的数组添加项目。

So the changes were to set mainArr as an object containing field settingsData with an empty array as value, this is done on const mainArr = { settingData: []}因此,更改是将mainArr设置为包含字段settingsData的对象,并使用空数组作为值,这是在const mainArr = { settingData: []}

Then the push was done over the array contained in settingsData with mainArr.settingsData.push(newValue) .然后使用mainArr.settingsData.push(newValue)settingsData包含的数组进行mainArr.settingsData.push(newValue)

If you need further explanaition just ask.如果您需要进一步解释,请询问。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM