将对象推入数组

时间:2016-10-25 21:36:34

标签: javascript arrays object

我知道这很简单,但我无法得到它。

我有这段代码:

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

标签是一些字符串,如“Title”和值“Ramones”。如果我这样做,我会得到一个简单的数组,如

["Title", "Ramones"]

我需要创建这个:

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

如何将这些推送到nietos数组以将它们作为对象推送?将使用一些i,k变量生成数字01,02,因为所有这些都在for。

10 个答案:

答案 0 :(得分:42)

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

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

答案 1 :(得分:12)

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

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

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

答案 2 :(得分: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;
}

答案 3 :(得分:0)

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

如果您愿意将属性或值推送到一个对象,则需要访问该对象,然后将数据推送到该对象中。 例: nietos[indexNumber].yourProperty=yourValue;在实际应用中:

nietos[0].02 = "Ramones";

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

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

这会将空对象推送到myArray,其中的索引编号为0,因此您的确切对象现在为myArray[0]

然后将propertyvalue推入其中:

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

答案 4 :(得分: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"}

答案 5 :(得分:0)

abcdefghijklmnopqrstuvwxyz

Add an object into an array

答案 6 :(得分:0)

也可以这样做。

       let data_array = [];
    
       let my_object = {}; 

       my_object.name = "stack";
       my_object.age = 20;
       my_object.hair_color = "red";
       my_object.eye_color = "green";
        
       data_array.push(my_object);

答案 7 :(得分:0)

let nietos = [];

function nieto(aData) {

    let o = {};

    for ( let i = 0; i < aData.length; i++ ) {
        let key = "0" + (i + 1);
        o[key] = aData[i];
    }

    nietos.push(o);
}

nieto( ["Band", "Ramones"] );
nieto( ["Style", "RockPunk"] );
nieto( ["", "", "", "Another String"] );

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

答案 8 :(得分:0)

将您的值保存在数组中并使用 stringify 进行转换

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

var jsonString = JSON.stringify(nietos);

答案 9 :(得分:-1)

将对象添加到数组

class App extends React.Component {
  state = {
  value: ""
  };

items = [
  {
    id: 0,
    title: "first item"
  },
  {
    id: 1,
    title: "second item"
  },
  {
    id: 2,
    title: "third item"
  }
];

handleChange = e => {
  this.setState({
    value: e.target.value
  });
};

handleAddItem = () => {
  if (this.state.value === "") return;
  const item = new Object();
  item.id = this.items.length;
  item.title = this.state.value;
  this.items.push(item);
  this.setState({
    value: ""
  });

  console.log(this.items);
};

render() {
  const items = this.items.map(item => <p>{item.title}</p>);
  return (
    <>
      <label>
        <input
          value={this.state.value}
          type="text"
          onChange={this.handleChange}
        />
        <button onClick={this.handleAddItem}>Add item</button>
      </label>
      <h1>{items}</h1>
    </>
  );
}
}

ReactDOM.render(<App />, document.getElementById("root"));
相关问题