我是javascript的半新手,想要创建这种类型的东西 - 像这样的对象列表:
{ID:1,Field1:val1,Field2:val2,Field 3:val3}
如果我静态创建但不确定如何动态处理它,我知道如何设置它。在给定的函数中,我将知道ID和其中一个字段,但是有3个单独的函数来查找每个字段/值,因此我需要在学习它们时用字段/值更新对象(希望这是有道理的)
这可以做到,如果有的话,有人会帮助我如何指出我正在寻找的东西吗?预先感谢您的任何帮助!
编辑:我认为我的帖子太模糊了,这就是我想做的事情:当在function1中时,我会知道ID,让我们说1,& someField的值为'val',例如。所以我将它添加到一个数组中。
在function2中,我会知道ID,仍然是1,&例如,differentField的值为2。我想从之前和之前访问该对象将新的字段/值添加到它(将有多个id / object只使用它作为基础)
所以在数组中我希望能够通过ID& amp;该对象的已知字段
答案 0 :(得分:3)
以下是我认为可能对您有所帮助的一个小例子。这会创建具有动态名称和值的obj,并将它们添加到数组中。
var myArray = [];
for (var i = 0; i < 3; i++) {
var myObj = {};
for (var x = 0; x < 3; x++) {
myObj["Field" + x] = "val" + x;
}
myArray.push(myObj);
}
console.log(myArray)
编辑Op后编辑
这是您更新后的另一个示例。如果我理解你,那么我认为你真的只需要一个基本上是更新的数组。我想你的JSON也有点过时了。在下面的示例中,ID将引用一个对象,该对象具有将存储“列表”的字段数组。
var myArray = [];
var testObj = {};
testObj.id = 1;
testObj.fields = [];
myArray.push(testObj)
// add myValue to the already existing obj with ID 1
addValue(1, "myValue");
// add myValue2 to the non-existent id 2 obj (it will be dynamically created)
addValue(2, "myValue2");
function addValue(id, val){
var foundID = false;
myArray.forEach(function(obj){
if(obj.id === id){
var newObj = {};
newObj["Field" + id] = val;
obj.fields.push(newObj);
foundID = true;
}
});
// if we did not find an obj with the passed in ID
// then create and initialize it
if(!foundID){
var newIDObj = {};
newIDObj.id = id;
var fieldsArray = [];
var newFieldsObj = {};
newFieldsObj["Field" + id] = val;
fieldsArray.push(newFieldsObj);
newIDObj.fields = fieldsArray;
myArray.push(newIDObj);
}
}
console.log(myArray);
// How to access a value knowing the ID and the fieldName
var result = getValue(1, "Field1");
// If no result is found, undefined will be returned
// This assumes Field Names are all unique!
function getValue(id, fieldName) {
var result;
myArray.forEach(function(currentObj) {
if (currentObj.id === id) {
currentObj.fields.forEach(function(currentField) {
if (typeof currentField[fieldName] !== "undefined") {
result = currentField[fieldName];
}
});
}
});
console.log("The value with ID: " + id + " and field name: " + fieldName + " is: " + result)
return result;
}