首页 > 解决方案 > 动态添加到不同的 JS 对象数据 - 在循环或开关等?

问题描述

所有我被困在这个位置并且不知道如何解决它:)我从网页中获得了许多不同的属性 - 我想将它们存储在对象中以便稍后将它们发送到 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; 但键值方法也无法按预期工作:(我做错了什么?

我知道这类问题也有数组,但真正的多维数组适用于所有其他语言,我可以有键值对,而不仅仅是数字索引...... :(

希望你明白我的意思......今天真的很晚......

感谢所有在那里!为了您的时间和耐心:)

标签: javascriptloopsobjectvariables

解决方案


我有点不清楚你在问什么,但听起来你正在尝试在 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);


推荐阅读