web-dev-qa-db-ja.com

動的にJavaScriptオブジェクトを別のオブジェクトに追加するにはどうすればよいですか

複数のJavaScriptオブジェクトがあるとします

{"type":"gotopage","target":"undefined"}
{"type":"press","target":"a"}
{"type":"rotate","target":"long"}

このオブジェクトを別のオブジェクトに追加するにはどうすればよいですか

config={}

挿入された各オブジェクトに次のように追加できるIDがあるかどうかを知っています。

config["id"]={}

しかし、この場合、IDなしでオブジェクトを追加するにはどうすればよいですか?

13
hh54188

オブジェクトと配列を混同していると思います。オブジェクトには名前付きキーがあり、配列には数値キーがあります。 .Push()を使用して、配列に簡単に追加できます。

var arr = [];
arr.Push("something");

ただし、変数名が示す構成オブジェクトの場合、これは実際には役に立ちません。オプションには意味のある名前を使用する必要があります。例:

var config = {
    something: 'blah',
    foo: 'bar'
};

オブジェクトに配列を格納することもできます:

config.manyStuff = [];
for(...) {
    manyStuff.Push(...);
}
9
ThiefMaster
var obj1 = {"type":"gotopage","target":"undefined"};

var config = {};
config.obj1 = obj1;

後からいつでも追加できます。

var obj1 = {"type":"gotopage","target":"undefined"};

var config = {};
config.obj1 = obj1;

var obj2 = {"key":"data"};
config.obj2 = obj2;
11
Boyo

これらのデータが同じタイプの場合は、代わりに配列を使用します。

var some_data = {"type":"gotopage","target":"undefined"}

var config = [];
var config.Push(some_data); //and do this for the rest

そして、あなたはこのような設定項目にアクセスできます:

var someVariable = config[index]; //where index is a number starting from 0
2
Joseph

このユーティリティ関数を使用しています:

module.exports.combine = function() {

  var rv = {};
  for (i = 0; i < arguments.length; i++) {
    for (thing in arguments[i]) {
        rv[thing]=arguments[i][thing];
    }
  }
  return rv;
}

同じ名前のプロパティは、後の引数のプロパティによって上書きされます

var util = require('lib/util.js');
console.log(util.combine(
  {"1":"one","two":function(){;},
  {"four":{"four.5":"four.5-b"}, "5":"foo"}});

結果:

    { '1': 'one',
    '5': 'foo',
    two: [Function],
    four: { 'four.5': 'four.5-b' } }
0
Rondo

オブジェクトを追加する場合は、use spread演算子を使用して簡単に追加できます。

例->

object1 = { property1: 1, property2: 2}
finalObject = [{...object1}]

finalObject = {... object1}

そしてあなたの質問の解決策に従って、ここで配列オブジェクトを使用します

finalObject = [{... object1}]

object1 = { property1: 1, property2: 2}
    finalObject = [{...object1}]
    document.getElementById("demo").innerHTML = JSON.stringify(finalObject);
<div id = "demo"></div>
0
user2713949