2014-06-22 2 views
2

나는 다음과 같은 개체가 :가장 좋은 방법

var obj = { "2014": {}, "2013": {}, "2012": {}, "description": null, "image": null }, 
    objKeys = Object.keys(obj); 
//objKeys contains [ "2014", "2013", "2012", "description", "image" ] 

그들이 거기에 존재하는 경우 나는 한 가지에 objKeys 배열에서 "설명"과 "이미지"를 제거하고 싶습니다 .

어떻게하면됩니까?

답변

1

이처럼 그들을 필터링 할 수 있습니다 :

objKeys = objKeys.filter(function(x){ return !/[a-z]/gi.test(x)}); 

은 위의 다른 키는 숫자라는 사실을 사용합니다. 당신은 단지 descriptionimage을 원한다면, 배열에 넣어이 수행

var removeKeys = ["description","image"]; 
objKeys = objKeys.filter(function(x){ return !new RegExp(removeKeys.join("|")).test(x)}); 
2

당신이 숫자 항상 유지하고자하는 키 있습니까? 나는 그들이 "년"이라고 가정하고 있습니다 ...

objKeys.filter(Number); // ["2012", "2013", "2014"] 
1

정규식을 사용하여 직접 필터링 할 수 있습니다. @ hutchbat의 대답에

objKeys = objKeys.filter(function(k){ return !/(description|image)/gi.test(k)}); 
1

작은 수정 , 키를 통해 왜이 반복?

Object.keys는 하나이고 필터는 다른 것입니다. 여기 내 코드가

var objKeys = []; 
for(var i in obj) if(!/(description|image)/gi.test(i)) objKeys.push(i); 

그래서 한 번 반복하고 필수적으로 수집합니다.