객체의 자바 스크립트 필터 배열
개체 배열이 있고 검색하는 가장 좋은 방법이 궁금합니다. 내가 검색하는 방법을 아래의 예를 감안할 때 name = "Joe"
와 age < 30
? jQuery가 도움을 줄 수있는 것이 있거나이 검색을 직접 강제로 강제해야합니까?
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);
다음을 사용할 수 있습니다 jQuery.grep()
.
var found_names = $.grep(names, function(v) {
return v.name === "Joe" && v.age < 30;
});
데모 : http://jsfiddle.net/ejPV4/
이 [].filter
방법을 사용하면 매우 쉽게 할 수 있습니다 .
var filterednames = names.filter(function(obj) {
return (obj.name === "Joe") && (obj.age < 30);
});
이[].filter
방법을 지원하지 않는 브라우저의 경우 shim을 추가해야합니다 . 이 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));
간단히 자바 스크립트를 사용할 수 있습니다. :)
빠른 질문입니다. 두 개의 객체 배열이 있고 각 배열의 객체가 다른 배열의 순서대로 있는지 확인할 수 있도록 이러한 객체 배열을 '정렬'하려면 어떻게해야합니까? 배열 내부의 객체에 어떤 키와 값이 포함되어 있는지 모르는 경우에는 어떻게됩니까? 순서가 짝수보다 훨씬 적습니까?
당신이 당신의 '와일드 카드 식'이 필요 그래서 [].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);
}));
또한 각 객체의 반복에 대해이 함수를 사용하여 각 객체의 모든 키에 대해 더 나은 집합 식을 만든 다음 이러한 방식으로 배열을 필터링 할 수 있습니다.
This is a small snippet from the API Juxtapose which I have almost complete, which does this, object equality with exemptions, object unities, and array condensation. If these are things you need or want for your project please comment and I'll make the lib accessible sooner than later.
Hope this helps! Happy coding :)
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>
For anyone who is looking for filter from an array of JSON objects using any of the keys of object/items
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));
filter from an array of the JSON objects:**
참고URL : https://stackoverflow.com/questions/13594788/javascript-filter-array-of-objects
'Nice programing' 카테고리의 다른 글
AngularJS에서 버튼 클릭시 새 탭 열기 (0) | 2020.10.20 |
---|---|
Java에서 memcpy ()에 해당하는 것이 있습니까? (0) | 2020.10.20 |
내 인라인 블록 요소가 제대로 정렬되지 않습니다. (0) | 2020.10.20 |
PostgreSQL에서 제약 이름 업데이트 (0) | 2020.10.20 |
Google지도 마커에 ID 추가 (0) | 2020.10.20 |