- 实现数组的flat
-
实现数组的flat方法,支持传入递归深度
代码模板:const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question('', (input) => { let [arr, depth] = input.split(';'); arr = JSON.parse(arr); depth =Number(depth); console.log(flat(arr, depth)); rl.close(); }); function flat(arr, depth) { // 实现代码 }
[1, [2, [3,4]]], 1 ====>>>>> [1,2,[3,4]]
------------------------------------------------------- JS链式调用
-
请实现 find 函数,使下列的代码调用正确。
// 约定: // name数据类型为String // price数据类型为Number var data = [ { price: 13, name: 'A-apple' }, { price: 9, name: 'B-apple' }, { price: 16, name: 'A-orange' }, { price: 10, name: 'B-orange' }, { price: 20, name: null }, ]; var find = function (origin) { // your code are here... } // 查找 data 中,符合条件的数据,并进行排序 var result = find(data).where({ 'name': /^A/ }).orderBy('price', 'desc'); console.log(result); // [ { price: 16, name: 'A-orange' }, { price: 13, name: 'A-apple' } ]
答案:// 约定: // name数据类型为String // price数据类型为Number var data = [ { price: 13, name: 'A-apple' }, { price: 9, name: 'B-apple' }, { price: 16, name: 'A-orange' }, { price: 10, name: 'B-orange' }, { price: 20, name: null }, ]; var find = function (origin) { // your code are here... return { vlaue: origin, where(object) { for (const key in object) { if (Object.prototype.hasOwnProperty.call(object, key)) { const element = object[key]; this.vlaue = this.vlaue.filter(item => element.test(item[key])) } } return this }, orderBy(key, sort) { return this.vlaue.sort((a, b) => sort !== 'desc' ? a[key] - b[key] : b[key] - a[key]) } } } // 查找 data 中,符合条件的数据,并进行排序 var result = find(data).where({ 'name': /^A/ }).orderBy('price', 'desc'); console.log(result); // [ { price: 16, name: 'A-orange' }, { price: 13, name: 'A-apple' } ]
- 数组中集合对象过滤
-
在我们拿到后端数据的时候,可能会对数据进行一些筛选、去重过滤。
示例
[{ name: 'kele', title: '可口可乐', id: 1 }, { name: 'kele', title: '芬达', id: 2 }, { name: 'wlg', title: '王老吉', id: 2 }, { name: 'xubi', title: '雪碧', id: 3 }] 数组,依据id去重复结果
[{ name: 'kele', title: '可口可乐', id: 1 }, { name: 'kele', title: '芬达', id: 2 }, { name: 'xubi', title: '雪碧', id: 3 }]
function unionFun(arr, type){ let a = []; // let b = []; // arr.map(item=>{ // if(a.indexOf(item[type]) === -1){ // a.push(item[type]) // b.push(item) // return item // } // }) // return b; const c = arr.filter((item) => { if(a.indexOf(item[type]) === -1){ a.push(item[type]) return item } }) return c; } let arr = [{ name: 'kele', title: '可口可乐', id: 1 }, { name: 'kele', title: '芬达', id: 2 }, { name: 'wlg', title: '王老吉', id: 2 }, { name: 'xubi', title: '雪碧', id: 3 }] console.log(unionFun(arr, 'name'))