如何将对象推入数组?

问题描述 投票:0回答:8

我知道这很简单,但我不明白。

我有这个代码:

// My object
const nieto = {
  label: "Title",
  value: "Ramones" 
}

let nietos = [];
nietos.push(nieto.label);
nietos.push(nieto.value);

如果我这样做,我会得到一个简单的数组:

["Title", "Ramones"]

我需要创建以下内容:

[{"01":"Title", "02": "Ramones"}]

如何使用

push()
将对象添加到
nietos
数组中?

javascript arrays json object array-push
8个回答
123
投票

您必须创建一个对象。为对象分配值。然后将其推入数组:

var nietos = [];
var obj = {};
obj["01"] = nieto.label;
obj["02"] = nieto.value;
nietos.push(obj);

53
投票

创建一个像这样的对象数组:

var nietos = [];
nietos.push({"01": nieto.label, "02": nieto.value});
return nietos;

首先在push方法中创建对象,然后返回新创建的数组。


15
投票

也可以这样做。

// our object array
let data_array = [];

// our object
let my_object = {}; 
   
// load data into object

my_object.name = "stack";
my_object.age = 20;
my_object.hair_color = "red";
my_object.eye_color = "green";
        
// push the object to Array
data_array.push(my_object);

7
投票

使用解构赋值(ES6)

const nieto = {label: 'title', value: 'ramones' } 
const modifiedObj = {01: nieto.label, 02: nieto.value}

let array = [
  {03: 'asd', 04: 'asd'}, 
  {05: 'asd', 06: 'asd'} 
]

// add the modified object to the first index of the array
array = [modifiedObj, ...array] 

console.log(array)

如果您想将修改后的对象推送到数组的最后一个索引,只需将解构数组

...array
更改到前面即可。

array = [...array, modifiedObj]

使用unshift()

const nieto = {label: 'title', value: 'ramones' } 
const modifiedObj = {01: 'title', 02: 'ramones'}

let arr = [
  {03: 'asd', 04: 'asd'}, 
  {05: 'asd', 06: 'asd'} 
]

// add the modified object to the beginning of the array
arr.unshift(modifiedObj)

console.log(arr)

Array 实例的 unshift() 方法将指定元素添加到 数组的开头并返回数组的新长度。

来源:developer.mozilla.org


1
投票

嗯,

["Title", "Ramones"]
是一个字符串数组。但是
[{"01":"Title", "02", "Ramones"}]
是一个对象数组。

如果您愿意将属性或值推送到一个对象中,则需要访问该对象,然后将数据推送到该对象中。 例子:

nietos[indexNumber].yourProperty=yourValue;
在实际应用中:

nietos[0].02 = "Ramones";

如果您的对象数组已经为空,请确保它至少有一个对象,或者您要将数据推送到其中的对象。

比方说,我们的数组是

myArray[]
,所以现在这是空数组,JS引擎不知道它有什么类型的数据,不是字符串,不是对象,不是数字什么的。因此,我们将把一个对象(可能是空对象)推入该数组中。
myArray.push({})
,或
myArray.push({""})

这会将一个空对象推入

myArray
,它将有一个索引号
0
,所以你的确切对象现在是
myArray[0]

然后将

property
value
推入其中,如下所示:

myArray[0].property = value;
//in your case:
myArray[0]["01"] = "value";

1
投票

下面的解决方案更直接。您所要做的就是定义一个简单的函数,该函数可以根据两个给定的项目“创建”对象。然后只需将此函数应用于两个具有要为其创建对象并保存在 resultArray 中的元素的数组。

var arr1 = ['01','02','03'];
var arr2 = ['item-1','item-2','item-3'];
resultArray = [];
    for (var j=0; j<arr1.length; j++) {
        resultArray[j] = new makeArray(arr1[j], arr2[j]);
    }
function makeArray(first,second) {
    this.first = first;
    this.second = second;
}

0
投票

我不太确定,但你可以尝试这样的:

var pack = function( arr ) {
    var length = arr.length,
        result = {},
        i;

    for ( i = 0; i < length; i++ ) {
        result[ ( i < 10 ? '0' : '' ) + ( i + 1 ) ] = arr[ i ];
    }

    return result;
};

pack( [ 'one', 'two', 'three' ] ); //{01: "one", 02: "two", 03: "three"}

0
投票

当任何对象中有超过 2 个属性时,可以使用此解决方案。

const nieto = {
  label: "Title",
  value: "Ramones" 
}

let nietos = [];

let xyz = Object.entries(nieto)

xyz.forEach((i,j)=>{
    i[0] = `${(j+1).toLocaleString("en-US", {
        minimumIntegerDigits: 2,
        useGrouping: false,
      })}`
})

nietos.push(Object.fromEntries(xyz))
© www.soinside.com 2019 - 2024. All rights reserved.