如何将对象添加到数组

2020/10/02 18:21 · javascript ·  · 0评论

如何将对象添加到数组(使用javascript或jquery)?例如,此代码有什么问题?

function(){
    var a = new array();
    var b = new object();
    a[0]=b;
}

我想使用此代码在function1数组中保存许多对象,并调用function2在数组中使用该对象。

  1. 如何将对象保存在数组中?
  2. 如何将对象放入数组并将其保存到变量?

使用Array.push()将任何东西放入数组。

var a=[], b={};
a.push(b);    
// a[0] === b;

有关数组的更多信息

一次添加多个项目

var x = ['a'];
x.push('b', 'c');
// x = ['a', 'b', 'c']

将项目添加到数组的开头

var x = ['c', 'd'];
x.unshift('a', 'b');
// x = ['a', 'b', 'c', 'd']

将一个数组的内容添加到另一个数组

var x = ['a', 'b', 'c'];
var y = ['d', 'e', 'f'];
x.push.apply(x, y);
// x = ['a', 'b', 'c', 'd', 'e', 'f']
// y = ['d', 'e', 'f']  (remains unchanged)

从两个数组的内容创建一个新数组

var x = ['a', 'b', 'c'];
var y = ['d', 'e', 'f'];
var z = x.concat(y);
// x = ['a', 'b', 'c']  (remains unchanged)
// y = ['d', 'e', 'f']  (remains unchanged)
// z = ['a', 'b', 'c', 'd', 'e', 'f']
var years = [];
for (i= 2015;i<=2030;i=i+1)
{
years.push({operator : i})
}

在这里数组年具有像

years[0]={operator:2015}
years[1]={operator:2016}

它继续这样。

首先,没有objectarrayObjectArray其次,您可以这样做:

a = new Array();
b = new Object();
a[0] = b;

现在a将是一个b以其为唯一元素的数组

使用ES6表示法,您可以执行以下操作:

对于追加,您可以像下面这样使用散布运算符

var arr1 = [1,2,3]
var obj = 4
var newData = [...arr1, obj] // [1,2,3,4]
console.log(newData);
  • JavaScript区分大小写调用new array()new object()将抛出一个,ReferenceError因为它们不存在。
  • 最好避免new Array()由于其容易出错的行为

    而是使用分配新数组
    = [val1, val2, val_n]对于对象,请使用= {}
  • 扩展数组有很多方法(如John的答案所示),但是最安全的方法是使用concat而不是pushconcat返回一个新数组,保持原始数组不变。push更改应避免的调用数组,尤其是在全局定义数组的情况下。
  • 冻结对象以及新数组也是一种很好的做法,以避免意外的突变。冻结的对象既不可变,也不可扩展(浅)。

应用这些要点并回答您的两个问题,您可以定义如下函数:

function appendObjTo(thatArray, newObj) {
  const frozenObj = Object.freeze(newObj);
  return Object.freeze(thatArray.concat(frozenObj));
}

用法:

// Given
const myArray = ["A", "B"];
// "save it to a variable"
const newArray = appendObjTo(myArray, {hello: "world!"});
// returns: ["A", "B", {hello: "world!"}]. myArray did not change.
/* array literal */
var aData = [];

/* object constructur */
function Person(firstname, lastname) {
  this.firstname = firstname;
  this.lastname = lastname;
  this.fullname = function() {
    return (this.firstname + " " + this.lastname);
  };
}

/* store object into array */
aData[aData.length] = new Person("Java", "Script"); // aData[0]

aData.push(new Person("Jhon", "Doe"));
aData.push(new Person("Anna", "Smith"));
aData.push(new Person("Black", "Pearl"));

aData[aData.length] = new Person("stack", "overflow"); // aData[4]

/* loop array */
for (var i in aData) {
  alert(aData[i].fullname());
}

/* convert array of object into string json */
var jsonString = JSON.stringify(aData);
document.write(jsonString);

将对象推入数组

扩展Gabi Purcaru的答案以包括对数字2的答案。

a = new Array();
b = new Object();
a[0] = b;

var c = a[0]; // c is now the object we inserted into a...

obejct显然是一个错字。但两者objectarray需要大写字母。

您可以使用空手,new Arraynew Object这些是[]{}

您可以使用将数据推入数组.push这会将其添加到数组的末尾。或者您可以设置一个索引以包含数据。

function saveToArray() {
    var o = {};
    o.foo = 42;
    var arr = [];
    arr.push(o);
    return arr;
}

function other() {
    var arr = saveToArray();
    alert(arr[0]);
}

other();

关于替代答案是这样的。

如果有这样的数组: var contacts = [bob, mary];

并且您想要在该数组中放置另一个数组,可以通过以下方式实现:

声明函数构造函数

function add (firstName,lastName,email,phoneNumber) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.phoneNumber = phoneNumber;
}

通过函数创建对象:

var add1 = new add("Alba","Fas","Des@gmail.com","[098] 654365364");

并将对象添加到数组中:

contacts[contacts.length] = add1;
a=[];
a.push(['b','c','d','e','f']);

我使用自动列表制作对象创建者的方式:

var list = [];

function saveToArray(x) {
    list.push(x);
};

function newObject () {
    saveToArray(this);
};

通过推,您甚至可以将多个对象添加到数组中

  let myArray = [];

   myArray.push(
              {name:"James", dataType:TYPES.VarChar, Value: body.Name},
              {name:"Boo", dataType:TYPES.VarChar, Value: body.Name},
              {name:"Alina", dataType:TYPES.VarChar, Value: body.Name}
             );

如果这样使用代码,则会遇到范围问题。如果打算在函数之间使用它,则必须在函数外部声明它(或者,如果调用,则将其作为参数传递)。

var a = new Array();
var b = new Object();

function first() {
a.push(b);
// Alternatively, a[a.length] = b
// both methods work fine
}

function second() {
var c = a[0];
}

// code
first();
// more code
second();
// even more code
本文地址:http://javascript.askforanswer.com/ruhejiangduixiangtianjiadaoshuzu.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!