阿里前端笔试题

题目一:
请完成“空白处”代码,使得以下组件在选择时能够将合适的值打印出来
class Counter extends React.Component {
	select(val) {
		console.log('you have select' + val);
	}
	render() {
		return (<ul>
           { 
               ['a','b','c'].map((item, index) => {
                   return <li onClick={___空白处___}>{item}</li>
               })
           }
       </ul>)
	}
}


题目二:
请实现find函数,使下列的代码调用正确。
约定:
title数据类型为String
userId为主键,数据类型为Number
var data = [
	{userId: 8, title: 'title1'},
	{userId: 11, title: 'other'},
	{userId: 15, title: null},
	{userId: 19, title: 'title2'}
];

var find = function(origin) {
	//your code are here...
}

//查找data中,符合条件的数据,并进行排序
var result = find(data).where({
	"title": /\d$/
}).orderBy('userId', 'desc');

console.log(result); // [{ userId: 19, title: 'title2'}, { userId: 8, title: 'title1' }];




题目三:
下面是一个redux中间件,补充“空白处”代码,使得dispatch支持action为函数作为返回值
  export default function() {
    return ({ dispatch, getState }) => next => action => {
      if (___空白处___) {
        return ___空白处___;
      }
      return next(action);
    };
  };



题目四:
为 Function 扩展一个通用的方法 bindX,可以实现如下功能
  function add(num1, num2) {
      return this.value + num1 + num2;
  }

  var data = {
      value: 1
  };

  var addEx = add.bindX(data, 2);

  addEx(3);    // 6






题目五:
有一个数组,里面只存在 * 和 字母,比如 [‘*’, ‘d’, ‘c’, ‘*’, ‘e’, ‘*’, ‘a’, ‘*‘]。现在需要把这个数组中的所有星号移动到左边,所有的字母移动到右边,所有字母的顺序不能改变。
var arr = ['*', 'd', 'c', '*', 'e', '*', 'a', '*'];

 function parse(arr){

 }

 console.log(parse(arr));


#内推##笔试题目##笔经##秋招##前端#
全部评论
回复一下第二题: const find = function (origin) {   // 代码写在这里...   let obj = new Object(origin);   Object.defineProperty(obj, "where", {     configurable: true, // 是否可配置     enumerable: false, // 是否可迭代     writable: false, // 是否可写     value: function (where) {       for (let key in where) {         if (where.hasOwnProperty(key)) {           obj = obj.filter((v) => where[key].test(v[key]));         }         return find(obj);       }     },   });   Object.defineProperty(obj, "orderBy", {     configurable: true, // 是否可配置     enumerable: false, // 是否可迭代     writable: false, // 是否可写     value: function (key, order) {       obj.sort((a, b) => {         if (order == "desc") {           return b[key] - a[key];         } else {           return a[key] - b[key];         }       });       return find(obj);     },   });   return obj; };
点赞 回复 分享
发布于 2021-09-03 23:00
不容易啊,终于把第二题搞出来了。有没有其他更好的思路啊? var find = function(origin) {     //your code are here...     return {         where: function(findObj) { //条件对象             const results = [];             let key = Object.keys(findObj);             let rexp = findObj[key];             origin.forEach((item, index) => {                 if (rexp.test(item[key])) {                     results.push(item);                 }             });             return {                 orderBy: function(key, order) {                     results.sort((item1, item2) => {                         if (order == 'desc&(8707)#39;) {                             return item2[key] - item1[key];                         } else {                             return item1[key] - item2[key];                         }                     })                     return results;                 }             }         }     } }
点赞 回复 分享
发布于 2020-07-18 16:08
感谢分享,做了一下第四题,分享一下。话说react,reduce都没看啊,第二题也没思路啊。 Function.prototype.bindX = function(data, ...outerArgs) {     let _this = this; //将add保存起来     return (...innerArgs) => {         return _this.call(data, ...outerArgs.concat(...innerArgs)); //将add的this指向data     } }
点赞 回复 分享
发布于 2020-07-18 15:00
是21届秋招笔试题吗?
点赞 回复 分享
发布于 2020-07-17 21:52
哪个部门啊,还要笔试?
点赞 回复 分享
发布于 2020-07-17 15:53

相关推荐

09-25 16:00
门头沟学院 Java
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
牛客48826091...:哥们胸肌挺好看
点赞 评论 收藏
分享
评论
2
28
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务