2017-11-15 2 views
0

インデックスをオブジェクトに作成することはできますか?ここに私のオブジェクトは、次のとおりです。javascriptオブジェクトにインデックスを追加することが可能

var objName = {}; 
var array1 = ['apple','sugar']; 
var array2 = ['spoon','fork']; 
var array3 = ['spoon2','fork2']; 
var array4 = ['spoon3','fork3']; 

objName['main'] = array1; 
objName['submain'] = array2; 
objName['main'] = array3; 
objName['submain'] = array4; 

console.log(objName); 

質問があり、私は私の前のオブジェクトが消去されずにオブジェクトに別の値を追加します。 objNameがグローバルなオブジェクト変数であると仮定して、私はそれを何度も繰り返し使用して、異なる値をそこにプッシュします。私は過去の記録も見ることができる出力を期待しています。

JSFiddle

+1

コードにはjQueryが含まれていません。何を求めているのですか? jQueryコードを提供できますか? –

+0

私は基本的なjavascriptを意味します –

+0

別の値を追加しようとしましたか?同じキーを使用しないと、消去されません。 –

答えて

1

もオブジェクトと同じキー名を渡すworking.soではありませんあなたがすでに追加したすべての値があるので、main``and submain`変数のgetterとsetterを追加しました。

これは、新しいエントリが追加されたときに最後のエントリを返します。その後、_main_submainプロパティによって何らかの履歴が残っています。

var objName = { 
 
    get main() { 
 
    if (this._main === undefined) { 
 
     return undefined; 
 
    } 
 
    return this._main[this._main.length-1]; 
 
    }, 
 
    set main(value) { 
 
    if (this._main === undefined) { 
 
     this._main = []; 
 
    } 
 
    this._main.push(value); 
 
    }, 
 
    get submain() { 
 
    if (this._submain === undefined) { 
 
     return undefined; 
 
    } 
 
    return this._submain[this._submain.length-1]; 
 
    }, 
 
    set submain(value) { 
 
    if (this._submain === undefined) { 
 
     this._submain = []; 
 
    } 
 
    this._submain.push(value); 
 
    }, 
 
}; 
 
var array1 = ['apple','sugar']; 
 
var array2 = ['spoon','fork']; 
 
var array3 = ['spoon2','fork2']; 
 
var array4 = ['spoon3','fork3']; 
 

 
objName['main'] = array1; 
 
objName['submain'] = array2; 
 
objName['main'] = array3; 
 
objName['submain'] = array4; 
 

 
console.log(objName);

1
単一のオブジェクトで

同じキーが配列を作成し、私はあなたが維持したいと仮定しています

var objName = []; 
 
var array1 = ['apple', 'sugar']; 

 
var array2 = ['spoon', 'fork']; 

 
var array3 = ['spoon2', 'fork2']; 

 
var array4 = ['spoon3', 'fork3']; 

 
objName.push({ 
 
    main: array1 
 
}); 
 
objName.push({ 
 
    submain: array2 
 
}); 
 
objName.push({ 
 
    main: array3 
 
}); 
 
objName.push({ 
 
    main: array4 
 
}); 
 
console.log(objName);

1

あなたのオブジェクトが指定されたキーが含まれている場合は、そうでない場合は、単にそのキーに配列を代入し、あなたの配列をarray#concatすることができ、確認することができます。 objがあなたのオブジェクトである

obj[name] = obj[name] ? obj[name].concat(array) : array;nameは、あなたの鍵の名前で、arrayは、追加する新しい配列です。

var objName = {}; 
 
var array1 = ['apple','sugar']; 
 
var array2 = ['spoon','fork']; 
 
var array3 = ['spoon2','fork2']; 
 
var array4 = ['spoon3','fork3']; 
 

 
var addInObject = function(obj, name, array){ 
 
    obj[name] = obj[name] ? obj[name].concat(array) : array; 
 
} 
 

 
addInObject(objName, 'main', array1); 
 
addInObject(objName, 'submain', array2); 
 
addInObject(objName, 'main', array3); 
 
addInObject(objName, 'submain', array4); 
 

 
console.log(objName);

2

あなたは4人の子供を持っていて、それらはジョンとケイト・2倍の2倍という名前の想像してみてください。今、あなたはジョンの一人に何かを与えて、あなたはそれを元に戻したいと思っています。だから、あなたは "Jooooohn!"と呼んでいます。ここに来てください! "どのヨハネが来るべきですか?最初のものか2番目のものか?さらに、どちらが最初のものですか?

今、あなたが間違っていたことがありますか? Javascriptオブジェクトには2つの同一のキーを割り当てることはできません。なぜなら、その時点でアクセスするプロパティを知る者は誰もいないからです。そのため、のキーは一意でなければなりません。

オブジェクトに以前のレコードも含めたい場合は、他の人が示唆しているように、配列を使用します。

関連する問題