2016-08-22 7 views
1

上のエントリを検索と置換:[モード:ID:A:B]jQueryの配列は、私のようなこのデータを含むような配列を持っている部分一致

例:

["del:123456789:0:0", "del:99887766:0:0", "edit:1471872633890:8845:0"] 

は、私がチェックすることができとにかくありidとremove thenエントリに部分一致があるかどうかを確認して置き換えますか?

例:1471872633890

試合とedit:1471872633890:8845:NEでエントリ全体の試合を置き換えるので、配列は次のようになります。

["del:123456789:0:0", "del:99887766:0:0", "edit:1471872633890:8845:NW"] 

さておき...あなたはAjaxの投稿の配列をシリアル化することができたよう? そうでなければ、とにかくこれを考え直す必要があります。

おかげ

UPDATE 私は、既存のアレイのエントリを更新したり、新しいエントリを追加しようとしています。

これは私が持っているものです...

​​

どのように私は実際には配列内の値を更新していますか?

+0

解決策が試された理由、失敗した理由、予想される結果を含めてください。それは本当にあなたのコードの問題を理解するのに役立ちます。ありがとう! –

答えて

4

この場合、mapを使用します。別のloopを使用することもできますが、この場合は扱いやすくなり、動作が気に入っています。ちょうど内部の検索を行い、新しい値を返します。

var arr = ["del:123456789:0:0", "del:99887766:0:0", "edit:1471872633890:8845:0"]; 
 

 
for(var i = 0; i < arr.length; i++) { 
 
    if(arr[i].indexOf("1471872633890") > -1) { 
 
     arr[i] = "edit:1471872633890:8845:NW"; 
 
    } 
 
} 
 

 
console.log(arr);

あなたはjQueryのajaxを使用する場合は、配列をシリアライズする必要はありません:forループとして

var arr = ["del:123456789:0:0", "del:99887766:0:0", "edit:1471872633890:8845:0"]; 
 

 
arr = arr.map(function(value) { 
 
    if(value.indexOf("1471872633890") > -1) { 
 
     return "edit:1471872633890:8845:NW"; 
 
    } 
 
    
 
    return value; 
 
}); 
 

 
console.log(arr);

それともあなたが好きならば、。 dataプロパティで送信することができます。

var arr = ["del:123456789:0:0", "del:99887766:0:0", "edit:1471872633890:8845:0"]; 

$.ajax({ 
    url: "foo.php", 
    method: "post", 
    data: { 
     myArray: arr 
    } 
}); 
+0

ありがとうございました..私はマップを使用しようとしていますが、私は常に空の配列を取得します。私はいくつかの詳細と私の質問を更新しました。 – Tom

+1

空の配列ですか?まあ、それはあなたのコードではほとんど不可能です。質問を編集して完全なコードを追加してください。それ以外の何かが間違っています。 @Tom – eisbehr

+0

こんにちは - 私はコードページをここで作成しました: 'http:// s.codepen.io/Tom_T/debug/jAoyvv' 問題の内容を知っていますが、解決方法はわかりません。起動時に配列は空です。フィールドを編集すると、配列が読み込まれます。もう一度編集すると、配列を更新する必要があります。編集する必要がない場合は、値を配列にプッシュしないために問題が発生します。つまり、新しいエントリ..私はそれを行う方法がわからない! – Tom

関連する問題