Nev*_*ore 5 javascript arrays jquery json
"names": [
{
"id": 17,
"user_id": 9,
"code": "de",
"name": "Ich bin Hans",
"created_at": "2017-07-31 12:43:19",
"updated_at": "2017-07-31 12:43:19"
},
{
"id": 18,
"user_id": 9,
"code": "en",
"name": "My name is Hans",
"created_at": "2017-07-31 12:43:19",
"updated_at": "2017-07-31 12:43:19"
}
]
Run Code Online (Sandbox Code Playgroud)
是否有任何方法可以code='en' 从jQuery中的上述JSON数组中获取JSON对象?
我可以用for循环来做,但我想也许有一种更简单的方法.
使用Array.prototype.filtervanilla JS中的函数来过滤掉对象 - 请参阅下面的演示:
var obj={names:[{id:17,user_id:9,code:"de",name:"Ich bin Hans",created_at:"2017-07-31 12:43:19",updated_at:"2017-07-31 12:43:19"},{id:18,user_id:9,code:"en",name:"My name is Hans",created_at:"2017-07-31 12:43:19",updated_at:"2017-07-31 12:43:19"}]};
var result = obj.names.filter(function(e){return e.code == 'en'})
console.log(result);Run Code Online (Sandbox Code Playgroud)
ES6版本更简单:
var obj={names:[{id:17,user_id:9,code:"de",name:"Ich bin Hans",created_at:"2017-07-31 12:43:19",updated_at:"2017-07-31 12:43:19"},{id:18,user_id:9,code:"en",name:"My name is Hans",created_at:"2017-07-31 12:43:19",updated_at:"2017-07-31 12:43:19"}]};
var result = obj.names.filter(e => e.code == 'en');
console.log(result);Run Code Online (Sandbox Code Playgroud)
使用Jquery grep函数.实际上你没有搜索对象,你正在搜索一组对象(名称).
查找满足过滤函数的数组元素.原始数组不受影响.
var input = {names:[{id:17,user_id:9,code:"de",name:"Ich bin Hans",created_at:"2017-07-31 12:43:19",updated_at:"2017-07-31 12:43:19"},{id:18,user_id:9,code:"en",name:"My name is Hans",created_at:"2017-07-31 12:43:19",updated_at:"2017-07-31 12:43:19"}]};
var result = $.grep(input.names, function(obj) {
return obj.code === "en";
});
console.log(result);Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>Run Code Online (Sandbox Code Playgroud)
另一个是Array#find功能
var input = {names:[{id:17,user_id:9,code:"de",name:"Ich bin Hans",created_at:"2017-07-31 12:43:19",updated_at:"2017-07-31 12:43:19"},{id:18,user_id:9,code:"en",name:"My name is Hans",created_at:"2017-07-31 12:43:19",updated_at:"2017-07-31 12:43:19"}]};
var result = input.names.find(item => {
return item.code == 'en'
})
console.log(result);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1310 次 |
| 最近记录: |