Javascript 객체의 필터 배열
저는 물건들을 가지고 있는데 그것을 검색하는 가장 좋은 방법이 궁금합니다.아래의 예를 고려할 때 어떻게 검색할 수 있습니까?name = "Joe"그리고.age < 30jQuery가 도와줄 수 있는 것이 있습니까? 아니면 제가 직접 이 검색을 강제해야 합니까?
var names = new Array();
var object = { name : "Joe", age:20, email: "joe@hotmail.com"};
names.push(object);
object = { name : "Mike", age:50, email: "mike@hotmail.com"};
names.push(object);
object = { name : "Joe", age:45, email: "mike@hotmail.com"};
names.push(object);
다음을 포함하는 최신 솔루션:
const found_names = names.filter(v => v.name === "Joe" && v.age < 30);
또는 여전히 jQuery를 사용하는 경우 다음을 사용할 수 있습니다.
var found_names = $.grep(names, function(v) {
return v.name === "Joe" && v.age < 30;
});
당신은 이것을 매우 쉽게 할 수 있습니다.[].filter방법:
var filterednames = names.filter(function(obj) {
return (obj.name === "Joe") && (obj.age < 30);
});
이 MDN 페이지에서 자세한 내용을 확인할 수 있습니다.
jQuery.filter() 함수를 사용하여 일치하는 요소의 하위 집합에서 요소를 반환할 수 있습니다.
var names = [
{ name : "Joe", age:20, email: "joe@hotmail.com"},
{ name : "Mike", age:50, email: "mike@hotmail.com"},
{ name : "Joe", age:45, email: "mike@hotmail.com"}
];
var filteredNames = $(names).filter(function( idx ) {
return names[idx].name === "Joe" && names[idx].age < 30;
});
$(filteredNames).each(function(){
$('#output').append(this.name);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output"/>
var nameList = [
{name:'x', age:20, email:'x@email.com'},
{name:'y', age:60, email:'y@email.com'},
{name:'Joe', age:22, email:'joe@email.com'},
{name:'Abc', age:40, email:'abc@email.com'}
];
var filteredValue = nameList.filter(function (item) {
return item.name == "Joe" && item.age < 30;
});
//To See Output Result as Array
console.log(JSON.stringify(filteredValue));
자바스크립트를 간단하게 사용할 수 있습니다 :)
키를 사용하여 개체 배열에서 필터링하려는 사용자:
function filterItems(items, searchVal) {
return items.filter((item) => Object.values(item).includes(searchVal));
}
let data = [
{ "name": "apple", "type": "fruit", "id": 123234 },
{ "name": "cat", "type": "animal", "id": 98989 },
{ "name": "something", "type": "other", "id": 656565 }]
console.log("Filtered by name: ", filterItems(data, "apple"));
console.log("Filtered by type: ", filterItems(data, "animal"));
console.log("Filtered by id: ", filterItems(data, 656565));
JSON 개체 배열에서 필터:**
var names = [{
name: "Joe",
age: 20,
email: "joe@hotmail.com"
},
{
name: "Mike",
age: 50,
email: "mike@hotmail.com"
},
{
name: "Joe",
age: 45,
email: "mike@hotmail.com"
}
];
const res = _.filter(names, (name) => {
return name.name == "Joe" && name.age < 30;
});
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.js"></script>
간단한 질문입니다.두 개의 개체 배열이 있는데 이러한 개체 배열을 '정렬'하여 각 배열의 개체가 다른 배열의 개체와 같은 순서로 배열되도록 하려면 어떻게 해야 합니까?어레이 내부의 개체에 포함된 키와 값이 무엇인지 모를 경우에는 어떻게 해야 합니까?심지어 그들이 어떤 순서로 되어 있는지도?
따라서 '와일드카드 표현식'이 필요합니다.[].filter,[].map기타. 와일드카드 표현을 어떻게 얻습니까?
var jux = (function(){
'use strict';
function wildExp(obj){
var keysCrude = Object.keys(obj),
keysA = ('a["' + keysCrude.join('"], a["') + '"]').split(', '),
keysB = ('b["' + keysCrude.join('"], b["') + '"]').split(', '),
keys = [].concat(keysA, keysB)
.sort(function(a, b){ return a.substring(1, a.length) > b.substring(1, b.length); });
var exp = keys.join('').split(']b').join('] > b').split(']a').join('] || a');
return exp;
}
return {
sort: wildExp
};
})();
var sortKeys = {
k: 'v',
key: 'val',
n: 'p',
name: 'param'
};
var objArray = [
{
k: 'z',
key: 'g',
n: 'a',
name: 'b'
},
{
k: 'y',
key: 'h',
n: 'b',
name: 't'
},
{
k: 'x',
key: 'o',
n: 'a',
name: 'c'
}
];
var exp = jux.sort(sortKeys);
console.log('@juxSort Expression:', exp);
console.log('@juxSort:', objArray.sort(function(a, b){
return eval(exp);
}));
또한 각 개체에 대해 반복적으로 이 함수를 사용하여 각 개체의 모든 키에 대해 더 나은 집합 표현식을 만든 다음 해당 방식으로 배열을 필터링할 수 있습니다.
이것은 제가 거의 완성한 API Juxtapose의 작은 조각입니다. 이것은 면제, 객체 단일성, 배열 축약과 객체 동일성을 제공합니다.만약 이것들이 당신의 프로젝트에 필요하거나 원하는 것들이라면 코멘트를 해주시면 제가 조만간 lib에 접근할 수 있도록 하겠습니다.
이것이 도움이 되길 바랍니다!해피 코딩 :)
가장 간단하고 읽을 수 있는 접근법은 네이티브 자바스크립트 필터 방법을 사용하는 것입니다.
네이티브 JavaScript 필터는 배열 요소를 필터링할 때 선언적 접근 방식을 사용합니다.Array.prototype에 정의된 메서드이므로 제공된 어레이에서 반복하여 콜백을 호출합니다.필터링 기능으로 작동하는 이 콜백에는 세 가지 매개 변수가 있습니다.
element반복되는 배열의 현재 항목
index반복되는 배열에서 현재 요소의 인덱스 또는 위치
array필터 방법이 적용된 원래 배열 예제에서 이 필터 방법을 사용합니다.필터는 모든 종류의 어레이에 적용할 수 있습니다.이 예에서는 개체 속성을 기준으로 개체 배열을 필터링합니다.
개체 속성을 기준으로 개체 배열을 필터링하는 예는 다음과 같습니다.
// Please do not hate me for bashing on pizza and burgers.
// and FYI, I totally made up the healthMetric param :)
let foods = [
{ type: "pizza", healthMetric: 25 },
{ type: "burger", healthMetric: 10 },
{ type: "salad", healthMetric: 60 },
{ type: "apple", healthMetric: 82 }
];
let isHealthy = food => food.healthMetric >= 50;
const result = foods.filter(isHealthy);
console.log(result.map(food => food.type));
// Result: ['salad', 'apple']
함수의 배열 필터링 및 자체 필터링 구축에 대한 자세한 내용은 다음 문서를 참조하십시오. https://medium.com/better-programming/build-your-own-filter-e88ba0dcbfae
언급URL : https://stackoverflow.com/questions/13594788/javascript-filter-array-of-objects
'programing' 카테고리의 다른 글
| 도메인 간 Ajax 요청 후 쿠키 보관 (0) | 2023.08.28 |
|---|---|
| Android 선택기 & 텍스트 색상 (0) | 2023.08.28 |
| MySQL에서 제외하는 방법 (0) | 2023.08.28 |
| javascript / jQuery를 사용하여 data-* 속성 목록 가져오기 (0) | 2023.08.28 |
| 'REPLACE' 함수를 사용한 Oracle UPDATE 문 (0) | 2023.08.28 |