-1

問題が発生しましたが、正しく解決する方法がわかりません。

多次元配列があり、この配列から特定の値をフェッチして、新しい配列に配置したいと思います。以下の例を参照してください。

var myArr = [];
var extArr = [{ name:"john", id:1 }, { name: "bill", id: 2 }, ... , { name: "john", id: N }, ... ];

$.each(extArr, function(key, val){
    if (  ...  ) { // <-- I need a condition here to prevent "name" repetition
        myArr.push({ name: val.name, id: val.id });
    } else {
        // do nothing
    }
});

myArrに同じ名前がプッシュされないようにするための条件を見つける必要があります。たとえば、myArrに2つのジョンまたは複数の請求書を入れたくありません。

私が考えることができるのは、次のようにmyArrの新しい$.eachループを起動することだけです。

$.each(extArr, function(key, val){
    var checkcheck;
    $.each(myArr, function(key, name){
       if ( val.name == name.name ) {
           checkcheck = false;
       } else {
           checkcheck = true;
       }
    }
    if (  checkcheck == false  ) {
        myArr.push({ name: val.name, id: val.id });
    } else {
        // do nothing
    }
});

しかし、これにはもっと賢い解決策があるはずです。私がそれを見つけるのを手伝ってください...

4

1 に答える 1

1

$.inArrayを使用して、値が既に存在するかどうかを確認できます。

$.each(extArr, function(key, val){
    if ( $.inArray(val.name, myArr) == -1) 
         myArr.push(val.name);
});
于 2013-03-14T20:02:30.773 に答える