>

var arr = [{
   key: "key1", value: "z"
}, {
   key: "key2", value: "u"
}, {
   ...
}];

key:"key1" 를 확인하는 방법  이미 존재하거나 존재하지 않습니다. 존재하지 않으면 ma 배열에 키를 추가해야합니다.

if(arr.hasOwnProperty("key1")){
      arr.unshift({key:"key1", value:"z"});
}

  • 답변 # 1

    객체로 채워진 배열이 있으므로 다음과 같이해야합니다 :

    (ES3)

    function lookup( name ) {
        for(var i = 0, len = arr.length; i < len; i++) {
            if( arr[ i ].key === name )
                return true;
        }
        return false;
    }
    if( !lookup( 'key1' ) ) {
        arr.push({
            key: 'key1',
            value: 'z'
        });
    }
    
    

  • 답변 # 2

    데이터를보다 쉽게 ​​저장하려면 다음과 같이하십시오 :

    var map = {
           "key1": "z",
           "key2": "u"
    };
    
    

    그러면 검사를 수행 할 수 있으며 키가 객체의 기존 속성과 충돌하지 않고 null 값이 필요없는 경우 더 쉽게 만들 수 있습니다.

    if (!map["key1"]) {
       map["key1"] = "z";
    }
    
    

    실제로 전체 객체가 필요한 경우 (여러분은 단지 예일뿐입니다), 객체를 배열에 저장하는 것이 아니라 키의 값으로 객체를 저장합니다. 즉, 배열이 아닌 맵으로 만듭니다.

  • 답변 # 3

    ECMAScript 5 filter 를 사용할 수 있습니다  테스트를 통과하지 못한 경우 배열에서 요소를 제거하는 방법. 결과 배열에 요소가없는 경우 값이없는 것을 알 수 있습니다.

    if(!arr.filter(function(elem) {
        return elem.key === "key1";
    }).length) {
        arr.push({ key: "key1", value: "z" });
    }
    
    

    이전 브라우저에서 작동하게하려면 shim을 사용하여 Array.prototype.filter 를 확인해야합니다.  정의되어 있습니다.

  • 답변 # 4

    var key;
    for(var i = 0; i < arr.length; i++)
    {
        if(arr[i].key == "key1")
        {
            key = arr[i];
            break;
        }
    }
    if(typeof (key)=='undefined') //for if the value is 0 as int
    {
        key = {
            key: "key1", value: "aaa"
        };
        arr.push(key);
    }
    
    

  • 답변 # 5

    배열과 객체를 모두 확인하여 이것과 함께 배열 키 또는 객체 속성이 있는지 확인할 수 있습니다. 매우 유용하며 두 유형을 모두 확인하는 데 동일한 방식으로 사용됩니다.

    /**
     * Check if an array key or object property exists
     * @key - what value to check for
     * @search - an array or object to check in
     */
    function key_exists(key, search) {
        if (!search || (search.constructor !== Array && search.constructor !== Object)) {
            return false;
        }
        for (var i = 0; i < search.length; i++) {
            if (search[i] === key) {
                return true;
            }
        }
        return key in search;
    }
    
    

    사용법 :

    어레이로서

    key_exists('jared', ['jared', 'williams']); //= true
    
    

    개체로서

    key_exists('jared', {'jared': 'williams'}); //= true
    
    

관련 자료

  • 이전 java - GregorianCalendar와의 이상한 행동
  • 다음 oop - 수업이 무엇인지 제대로 이해하고 있습니까?