2016-10-19 4 views
0

フォームから「名前」、「姓」、「年齢」を挿入して、フォームのすぐ下の表に印刷できます。配列内のオブジェクトの数に応じてIDを変更します(javascript/jquery)

ユーザーを追加するたびに、行を追加し、配列内のすべての情報をプッシュします。

"idUser"という変数を使用して、各行に一意のIDを割り当てます。最初の行ID = 0、2番目の行ID = 1、3行目のID = 2などです。 "変数と私はそれを新しい行に割り当てます。

その後、私は編集および削除すべての行を、私はこの問題を解決する方法がわからないことができます。 例えば、私は3人のユーザーがいるので、私は

idUser=0 name surname age edit delete 
idUser=1 name surname age edit delete 
idUser=2 name surname age edit delete 

を印刷し、私は3でこの配列を持っています要素:

[{ 
"id": 0, 
"name": name, 
"surname": surname, 
"age": age 
}, 
{ 
"id": 1, 
"name": name, 
"surname": surname, 
"age": age 
}, 
{ 
"id": 2, 
"name": name, 
"surname": surname, 
"age": age 
}, 
] 

最初の行を削除すると、配列の最初の要素が同時に削除されます。だから、状況は以下のようになります。

idUser=1 name surname age edit delete 
idUser=2 name surname age edit delete 

と配列:

[{ 
"id": 1, 
"name": name, 
"surname": surname, 
"age": age 
}, 
{ 
"id": 2, 
"name": name, 
"surname": surname, 
"age": age 
}, 
] 

だから私は多くの問題を持っている:私は、新しいユーザーを追加する場合、「idUser」刻み、私が持っていますので、 idを持つ新しい行= 3

idUser=1 name surname age edit delete 
idUser=2 name surname age edit delete 
idUser=3 name surname age edit delete 

が、私はidUser = 3で行を編集したい場合、私は配列から情報を取るので、私ができる(フォームフィールドでそれらをコピーするので、私は、エラーを持っていますフォームで編集します)、配列には3つの要素しかありません(と私はidUser = 3、配列の4番目の要素なので)4番目の要素を求めます....また配列内のすべてのオブジェクトのidを変更する必要があります(最初の位置[0]のオブジェクトはid:0、secondオブジェクトID:1)。ですから、私が何かを削除すると、配列内のすべてのオブジェクトのID、各行のid、変数 "idUser"を更新する必要があります。Idkは同時にこのすべてのものを更新する方法を教えてください。コード、私はそれを解決するためのアイデアとidと変数 "idUser"をどのように処理する必要があります

+0

idで行にアクセスするのではなく、idを編集リンクの 'data-'属性に追加するか、クリックハンドラのトラバース関数を使用してみてください: 'var recordId = $(this).closest( 'tr' ).find( '。record-id')。val(); ' –

+0

しかし、IDを使用しないと、配列からデータを取得する方法はありますか?私は配列の特定の位置からデータを抽出するためにそれを使用することができるので、私はIDを持っている...それは私がインクリメンタル変数 "idUser" – razer90

答えて

0

インデックスのようなidプロパティを使用していますが、実際にはデータから要素を削除すると機能しなくなりますアレイ。代わりに、アイテムが削除されると、すべてのデータポイントを変更するので、私は2つのうちのいずれかの操作を行います。

  • ID
  • によってユーザを参照するMapobjectがでidでユーザオブジェクトを見つける機能を確認してください配列。

大きなデータセットの場合は、オプション1を使用します。しかし、小規模な配列のために、あなたにもそうようArray.prototype.findを使用する場合があります。

function getObjWithKeyValue(arr, key, value) { 
 
    return arr.find(function(item) { 
 
    return item[key] === value; 
 
    }); 
 
}; 
 
        
 
var data = [{id:1,name:"",surname:"",age:""},{id:2,name:"",surname:"",age:""}]; 
 

 
var personWithId1 = getObjWithKeyValue(data, "id", 1); 
 
console.log(personWithId1);


他のアプローチを、もし興味があるなら:

var data = [{id:1,name:"",surname:"",age:""},{id:2,name:"",surname:"",age:""}]; 
 

 
var dataMap = data.reduce(function(map, d) { 
 
    map[d.id] = d; 
 
    return map; 
 
}, {}); 
 

 
var userWithId1 = dataMap[1]; 
 
console.log(userWithId1);

関連する問題