将对象推入数组
push object into array
我知道这很简单,但我不明白。
我有这个代码:
// 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
数组中?
嗯,["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";
我不是很确定,但你可以这样试试:
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"}
您必须创建一个对象。 将值分配 给对象。然后推入数组:
var nietos = [];
var obj = {};
obj["01"] = nieto.label;
obj["02"] = nieto.value;
nietos.push(obj);
像这样创建一个对象数组:
var nietos = [];
nietos.push({"01": nieto.label, "02": nieto.value});
return nietos;
首先在 push 方法中创建对象,然后 return 新创建的数组。
下面的解决方案更直接。您所要做的就是定义一个简单的函数,该函数可以 "CREATE" 来自两个给定项目的对象。然后只需将此函数应用于两个数组,这些数组具有您要为其创建对象并保存在 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;
}
将对象添加到数组
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"));
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);
Add an object into an array
也可以这样做
// 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);
将您的值保存在数组中并使用 stringify
进行转换
var nietos = [];
nietos.push({"01": nieto.label, "02": nieto.value});
return nietos;
var jsonString = JSON.stringify(nietos);
使用解构赋值 (ES6)
const obj = {label: "Title", value: "Ramones" } // Modify the object
let restOfArray,
array = [
{'03': 'asd', '04': 'asd'},
{'05': 'asd', '06': 'asd'}
];
let modifiedObj = {'01': obj.label, '02': obj.value}
[...restOfArray] = array // Unpack the objects inside the array
array = [modifiedObj , ...restOfArray] // Push the modified object to the first index
console.log(array)
如果您想将其推到最后一个索引,只需将 ...restOfArray
更改为最前面即可。
array = [...restOfArray, modifiedObj]
当您在任何对象中拥有超过 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))
我知道这很简单,但我不明白。
我有这个代码:
// 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
数组中?
嗯,["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";
我不是很确定,但你可以这样试试:
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"}
您必须创建一个对象。 将值分配 给对象。然后推入数组:
var nietos = [];
var obj = {};
obj["01"] = nieto.label;
obj["02"] = nieto.value;
nietos.push(obj);
像这样创建一个对象数组:
var nietos = [];
nietos.push({"01": nieto.label, "02": nieto.value});
return nietos;
首先在 push 方法中创建对象,然后 return 新创建的数组。
下面的解决方案更直接。您所要做的就是定义一个简单的函数,该函数可以 "CREATE" 来自两个给定项目的对象。然后只需将此函数应用于两个数组,这些数组具有您要为其创建对象并保存在 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;
}
将对象添加到数组
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"));
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);
Add an object into an array
也可以这样做
// 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);
将您的值保存在数组中并使用 stringify
进行转换var nietos = [];
nietos.push({"01": nieto.label, "02": nieto.value});
return nietos;
var jsonString = JSON.stringify(nietos);
使用解构赋值 (ES6)
const obj = {label: "Title", value: "Ramones" } // Modify the object
let restOfArray,
array = [
{'03': 'asd', '04': 'asd'},
{'05': 'asd', '06': 'asd'}
];
let modifiedObj = {'01': obj.label, '02': obj.value}
[...restOfArray] = array // Unpack the objects inside the array
array = [modifiedObj , ...restOfArray] // Push the modified object to the first index
console.log(array)
如果您想将其推到最后一个索引,只需将 ...restOfArray
更改为最前面即可。
array = [...restOfArray, modifiedObj]
当您在任何对象中拥有超过 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))