第十一天:数组小技巧
<p>数组小技巧可以方便我们来写我们的代码</p>
<h4>1.过滤到数组中所有的假值元素</h4>
<h6>使用 Array.filter() 过滤掉数组中所有 假值元素(false, null, 0, "", undefined, 和 NaN)。使用 Array.filter() 过滤掉数组中所有 假值元素(false, null, 0, "", undefined, 和 NaN)。</h6>
<pre><code class="language-javascript">const compact = arr => arr.filter(Boolean);
let c = [1,2,3,0,'false',null,NaN]
let a = compact(c)
console.log(a) //[1, 2, 3, "false"]</code></pre>
<h4>2.过滤所有的不是数字的元素</h4>
<pre><code class="language-javascript">const number = arr => arr.filter(Number)
let b = number(c)
console.log(b) //[1, 2, 3]</code></pre>
<h4>3.过滤掉所有的字符串</h4>
<pre><code class="language-javascript">const filterString = arr => arr.filter(String);
let d = filterString(c)
console.log(d) //[1, 2, 3, 0, "false", null, NaN]</code></pre>
<h4>4.计算数组中指定值出现的次数</h4>
<pre><code class="language-javascript">let arr = [1,2,3,1,1,1,1,3,4,5] ;
const countOccurrences = (arr,val) => arr.reduce((a,v) => (v === val ? a+1 : a+0),0) ;
let count = countOccurrences(arr,1)
console.log(count) //5</code></pre>
<h4>5.过滤数组中的重复项</h4>
<pre><code class="language-javascript">let arr2 = [1,2,3,4,54,5,66,7,2,2,2,2] ;
let newArr = [...new Set(arr2)];
console.log(newArr) //[1, 2, 3, 4, 54, 5, 66, 7]</code></pre>
<h4>6.深度平铺数组</h4>
<pre><code class="language-javascript">const deepFlatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? deepFlatten(v) : v)));
deepFlatten([1, [2], [[3], 4], 5]); // [1,2,3,4,5]</code></pre>
<h4>7.返回两个数组之间的差异值</h4>
<pre><code class="language-javascript">//根据数组 b 创建一个 Set 对象,然后在数组 a 上使用 Array.filter() 方法,过滤出数组 b 中不包含的值。
const difference = (a, b) => {
const s = new Set(b);
return a.filter(x => !s.has(x));
};
difference([1, 2, 3], [1, 2, 4]); // [3]
</code></pre>
<h4>8.根据数组属性值找某个对象</h4>
<pre><code class="language-javascript">function checkObject(arr,property,val){
return arr.find( (ele) => {
return ele[property] === val
})
}
//例子:
var inventory = [
{name: 'apples', quantity: 2},
{name: 'bananas', quantity: 0},
{name: 'cherries', quantity: 5}
];
let a = checkObject(inventory,"name","apples")
console.log(a)
//[object Object] {
// name: "apples",
// quantity: 2
}</code></pre>