Dim*_*kas 8 javascript arrays jquery
我想迭代数组的元素,如果条件为真,我想创建一个新数组.
示例:我有一个名为Messages的数组,其元素是对象,我想检查id属性是否等于5.如果是,则创建一个仅包含此对象的新数组.
messages = [{
"id": 10,
"body": "hello!"
}, {
"id": 21,
"body": "hola!"
}, {
"id": 5,
"body": "ciao!"
}];
var message5 = [];
var dataObj = {};
$.each(messages, function(index, value) {
if (value.id == 5) {
dataObj[index] = value;
}
});
message5.push(dataObj[index]);
Run Code Online (Sandbox Code Playgroud)
我希望我的结果是:
message5 = [
{
"id": 5,
"body": "ciao!"
}
]
Run Code Online (Sandbox Code Playgroud)
Array.prototype.filter尝试在这种情况下使用,
var message5 = messages.filter(function(itm){
return itm.id == 5;
});
console.log(message5); //[{"id": 5,"body": "ciao!"}]
Run Code Online (Sandbox Code Playgroud)
如果你想让它更简洁,那么你可以使用 ES6 Arrow function,
var message5 = messages.filter(itm => itm.id == 5);
console.log(message5); //[{"id": 5,"body": "ciao!"}]
Run Code Online (Sandbox Code Playgroud)
但请注意,上面的代码类似于,
var message5 = messages.filter(function(itm){
return itm.id == 5;
}.bind(this)); //Arrow function will automatically bind its lexical scope to it.
Run Code Online (Sandbox Code Playgroud)