动态添加到不同的JS对象数据 - 在循环或开关内等等?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (163)

我不知道如何解决,我从网页获得了许多不同的属性 - 我想将它存储在对象中以便稍后将它们发送到PHP / Mysql - 我的问题是我不知道用户创建了多少对象,这些对象将数据放入页面中,所以我需要创建对象,通过点击发送按钮,即:object1 {id,name,date ...},object2,object3 page - 一次不能有超过150个对象存储在对象中的数据。所以我尝试在读取输入字段的长度时动态创建对象 - 到目前为止一直有效。现在我想用数据填充创建的对象,同时用jquery遍历页面并搜索具有我需要存储在Object1中的id和数据的类,

var objekt1 =  {};
var objekt2 =  {};


// handle click and add class
$("#but1").on("click", function(){
 for (x=1;x<3; x++ ){
 var key = "objekt"+x;
 alert(key);
 var value = x;
 key.id=x;
 key.name="name"+x;
 }
 /*objekt1.id='10';
 objekt1.name='obj1';
 objekt2.id='20';
 objekt2.name='obj2';*/
 
 $("#output1").html(objekt1.id+ ' ' + objekt1.name);
 $("#output2").html(objekt2.id+ ' ' + objekt2.name);
}) //opn click

#but1 {
  background: #0084ff;
  border: 1px solid white;
  border-radius: 5px;
  padding: 8px 14px;
  font-size: 15px;
  color: #fff;
}

#but1:hover{
  cursor: pointer;}
body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="but1">try me</div>
<div id="output1">

</div>
<div id="output2">

</div>

我想实现:objekt1.id = 1; 但不知道如何创建它,'objekt'+ x = x; 根本不起作用:而且键值也没有按预期工作:(我做错了什么?

我知道还有这类问题的数组,但多维数组可以在所有其他语言中使用,我可以拥有键值对而不仅仅是数字索引... :(

希望你明白我的意思......

感谢所有人!

提问于
用户回答回答于

创建objekt1objekt2作为全局变量使用window["variable_name"]

for (x=1; x < 3; x++){
window["objekt" + x] = {};
window["objekt" + x].name = "name" + x;
window["objekt" + x].id = x * 10;
 }
console.log(objekt1)
console.log(objekt2)

或者动态创建自己的父对象和子对象

var data = {};

for (x=1; x < 3; x++){
data["objekt" + x] = {};
data["objekt" + x].name = "name" + x;
data["objekt" + x].id = x * 10;
 }
console.log(data.objekt1)
console.log(data.objekt2)
用户回答回答于

我对你要问的内容有点不清楚,但听起来你正试图在for循环中动态创建对象。下面是如何迭代某些东西并创建一个对象,然后将其存储在一个数组中的示例。如果我的理解不正确,请告诉我。

// Option 1
const objects = [];
for (let x = 1; x < 3; x++ ){
   const obj = {
    id: x,
    name: `something ${x}`
   }
   objects.push(obj);
 }
 console.log(objects);
 
 
 // Option 2
 const obj2 = {};
 for (let x = 1; x < 3; x++) {
  obj2[`Item_${x}`] = { id: x };
 }
 console.log(obj2);

扫码关注云+社区

领取腾讯云代金券