Day*_*mer 37 javascript arrays conditional-statements
我正在使用W3C学习JavaScript,但我找不到这个问题的答案.
我试图对满足某些条件的数组元素进行一些操作.
除了在for循环中运行数组元素之外,有没有办法做到这一点?也许像(在其他语言中):
foreach (object t in tArray)
if (t follows some condition...) t++;
Run Code Online (Sandbox Code Playgroud)
另一件事,有时我想使用元素的值,有时我想用它作为参考.什么是语法上的区别?
同样,我会很高兴在更广泛的网站上推荐学习JavaScript.谢谢
Tim*_*own 32
在大多数浏览器(不是IE <= 8)中,数组有一个filter方法,它不能完全按照您的要求进行,但会创建一个满足特定条件的原始数组元素数组:
function isGreaterThanFive(x) {
return x > 5;
}
[1, 10, 4, 6].filter(isGreaterThanFive); // Returns [10, 6]
Run Code Online (Sandbox Code Playgroud)
Mozilla Developer Network有很多优秀的JavaScript资源.
您可以使用Array.prototype.find,它完全符合您的要求,返回满足条件的第一个元素。例子:
> ([4, {a:7}, 7, {a:5, k:'r'}, 8]).find(o => o.a == 5)
{a:5, k:'r'}
Run Code Online (Sandbox Code Playgroud)
将ES6 Array.filter()和箭头函数与表达式主体一起使用:
myArray.filter(x => x > 5)
Run Code Online (Sandbox Code Playgroud)
比@Beauty的答案更简洁。
这里写一个过滤器的简短方法.从一组数字中,它返回大于5的所有值.
myArray.filter((x) => { return x > 5; })
Run Code Online (Sandbox Code Playgroud)
用法示例:
var filterResult = [1, 10, 4, 6].filter((x) => { return x > 5; });
console.log(filterResult); // returns [ 10, 6 ]
Run Code Online (Sandbox Code Playgroud)
这里是一个对象数组的过滤器,用于检查属性条件.
myArray.filter((x) => { return x.myNumber > 5; })
Run Code Online (Sandbox Code Playgroud)
用法示例:
var myArray = [{myNumber: 1, name: 'one'}, {myNumber: 3, name: 'tree'}, {myNumber: 6, name: 'six'}, {myNumber: 8, name: 'eight'}];
var result = myArray.filter((x) => { return x.myNumber > 5; });
console.log(result); // returns [ { myNumber: 6, name: 'six' }, { myNumber: 8, name: 'eight' } ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50306 次 |
| 最近记录: |