目录

  • 问题来源
  • js数组
    • 数组通过下标赋值
    • 数组通过push赋值
  • 总结
  • loopback4
    • 安装
    • 创建项目
    • 项目启动
    • 访问项目
    • 创建HelloController
    • 运行访问HelloController

问题来源

今天在开发过程中,遇到一个很奇怪的问题,由于公司微服务的部分网关使用loopback4

LoopBack4是IBM主导的一个高度可扩展的开源的Node.js框架,基于流行的Express框架和TypeScript语言编写。

因而这里涉及到JavaScript的代码。

现在有一个特殊的场景,需要封装设备信息和放置点信息。

现有设备数组和放置点数组,外循环是设备数组,内循环是设备放置点数组,如果设备放置点Id等于放置点的Id,就向新数组Array中添加包含设备信息和放置点信息的json对象,但无论如何新数组的长度始终小于设备数组的长度,按道理说如果设备的放置点Id不等于放置点的Id,那么就将该位置存储为null,长度始终是相等的。

于是,使用下标添加值和push添加值的两种方式,去探讨这个问题:

js数组

使用如下几种方式声明js数组:

 //第一种var array=new Array();//第二种:规定了数组的长度为2  var arr2 = new Array(2);//第三种  var arr3 = new Array(true,123,false);//第四种var arr4 = [false,"aaa",123];

数组通过下标赋值

@get('/v1/test')async test(): Promise<any> {var array=new Array(0);let arrayLength = 5;for (var i =0 ;i<arrayLength;i++){for (var j =3;j<8;j++){if (i == j){array[i] ={"index":i}}}}return {"arrayLength":array.length,"array":array};}

返回结果为

{"arrayLength": 5,"array": [null,null,null,{"index": 3},{"index": 4}]
}

从返回结果可以看出,如果外循环的值不等于内循环的值,外循环对应的下标指向null,数组长度为外循环数组的长度,由于array的下标不是从0开始,而是从相等处开始,即i=3,因而,下标为0,1,2的值为null

数组通过push赋值

@get('/v1/test')async test(): Promise<any> {var array=new Array(0);let arrayLength = 5;for (var i =0 ;i<arrayLength;i++){for (var j =3;j<8;j++){if (i == j){array.push({"index":i})}}}return {"arrayLength":array.length,"array":array};}

返回结果

{"arrayLength": 2,"array": [{"index": 3},{"index": 4}]
}

push的返回数组的长度为,其真实存储的对象只有两个,因为外循环和内循环只有3和4相等。

总结

因而,如是外循环和内循环同时存在,只有相等时才填充新数组时,下标形式的数组长度要大于等于push形式的数组,因为下标形式的数组可能存储null值。

loopback4

安装

运行命令,全局安装:

npm i -g @loopback/cli

创建项目

运行如下指令创建项目

lb4 app

输入项目相关的信息,等待安装完成:

Project name: loopback_demo
Project description: Demo
Project root directory: loopback-demo
Application class name: LoopbackDemoApplication
Select features to enable in the project Enable tslint, Enable prettier, Enable mocha, Enable loopbackBuild, Enable vs
code, Enable repositories, Enable services

项目启动

安装完成后,进入程序路径,运行如下指令:

npm start

等待程序启动成功。

访问项目

程序启动成功后,打开浏览器输入http://127.0.0.1:3000/ping,可以看到以下信息:

{"greeting": "Hello from LoopBack","date": "2019-01-23T05:48:58.850Z","url": "/ping","headers": {"host": "127.0.0.1:3000","connection": "keep-alive","upgrade-insecure-requests": "1","user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36","dnt": "1","accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","accept-encoding": "gzip, deflate, br","accept-language": "zh-CN,zh;q=0.9,en;q=0.8"}
}

创建HelloController

运行命令,输入controller名称,回车会自动执行,等执行完毕。

lb4 controller

执行完毕后进入创建的controller文件,粘贴以下内容:

import {get} from '@loopback/rest';export class HelloController {@get('/hello')hello(): string {return 'Hello world!';}
}

运行访问HelloController

运行npm start,等待程序启动成功。

程序启动成功后,打开浏览器输入http://127.0.0.1:3000/hello,可以看到信息Hello world!

js声明数组 js数组如何获取真实对象 js数组处理null值情况 js数组通过下标赋值和push赋值的区别 loopback4的基础使用相关推荐

  1. php 数组简写形式,php 获取美国50个州的名称、简写对应数组用法示例

    这篇文章主要为大家详细介绍了php 获取美国50个州的名称.简写对应数组用法示例,具有一定的参考价值,可以用来参考一下. 美国的州简写和标题对应数组,例如 AK 转换成Alaska,感兴趣的小伙伴,下 ...

  2. 获取数组名称 php,php 获取美国50个州的名称、简写对应数组用法示例

    搜索热词 美国的州简写和标题对应数组,例如 AK 转换成Alaska,感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧. 经测试代码如下: /** * 美国50个州的名称.简写对应数 ...

  3. php获取p标签的值,js使用html()或text()方法获取设置p标签的显示的值

    html()方法 此方法类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中的HTML内容.要获取某个元素的内容,可以这样: var p_html = $(" ...

  4. html 获取p 属性值,js使用html()或text()方法获取设置p标签的显示的值

    html()方法可以用来读取或者设置某个元素中的HTML内容,text()方法可以用来读取或者没置某个元素中的文本内容 html()方法 此方法类似于JavaScript中的innerHTML属性,可 ...

  5. js设置input输入框为必选输入框,判断空格或null值

    设置input为输入框为必选输入框,即判空: <form action="demo-form.php">Username:<span style="co ...

  6. 请求接口获取到的数据其中出现null值,处理的时候导致了程序crash,解决方案如下:...

    第一种方法是使用分类给字典添加一个类方法,将字典中的null值全部替换为空字符串,代码如下: .h文件代码: @interface NSDictionary (DeleteNull) + (id)ch ...

  7. js判断数组,对象,是否为空,是否含有某个值,判断数组中对象是否有某个值

    一.数组 1.判断数组是否为空                  arr.length let arr = []; if (arr.length == 0){console.log("数组为 ...

  8. Vue由本地js中存放的url地址获取图片

    Vue由本地js中存放的url地址获取图片 对象必须放在js中(而不是json里面,json没有require).如果是在json中,需要采用其他方式去获取 注意:url地址必须用这种形式,有requ ...

  9. php 二维数组根据键值合并二维数组_3分钟短文 | PHP 根据值移除数组元素,哪个方法最简单?...

    引言 PHP 数组操作,之前我们讲了如何根据值,进行多维数组的排序.今天说一说,如何根据值,进行数组元素的删除. 学习时间 假设有一个一维数组,单纯的数字数组.为了简化问题,我们假设数组元素没有重复项 ...

最新文章

  1. kubernetes环境下私有仓库搭建
  2. 设计模式的六大原则(个人笔记)
  3. a as as big rat_你知道填空中as的这个变态用法吗?
  4. 水瓶座和什么座最配:天秤座,双子座,狮子座
  5. flutter友盟分享_flutter中友盟插件开发使用
  6. C语言实现数组Array(附完整源码)
  7. React性能优化:immutability-helper
  8. 前端学习(1257):基于promise处理ajax请求
  9. unity 查找所以物体_用Unity来实现一下绳子效果——Obi Rope插件介绍
  10. fast-planner 安装
  11. 原版win7集成usb3.0驱动_windows7的不老传说,十代U安装win7教程
  12. 仿XP系统的任务栏菜单
  13. 双二极管(BAT54S)在电路中起什么作用? 钳位和保护
  14. Easy2game使用
  15. 西门子estop指令_西门子PLC故障安全编程——ESTOP1指令
  16. 【遥感图像预处理方法】
  17. VS2013及MFC下载
  18. html怎样改成png格式,如何将jpg图片转换成png格式 又怎样把png转换成jpg
  19. 巴特沃斯(Butterworth)滤波器(一)
  20. 基于FPGA的超声成像算法的硬件设计

热门文章

  1. iphone 录音与播放同时 音量问题
  2. 换个姿势看 hooks,灵感来源组合和 HOC 模式下逻辑视图分离新创意
  3. Mac os区别_Photoshop和PS有什么区别
  4. 微信小程序自定义组件的基本使用
  5. Android 流式布局
  6. 判断当前的浏览器是pc还是移动设备,如果是手机,就跳转到对应手机端网站
  7. 两招教你苹果12隐藏主界面应用图标「iphone技巧」
  8. 数字经济,安全为本 |《数据防泄露技术指南》盛大发布
  9. mysql用macbookair,Macbook air OS X Yosemite10.10.5安装MYSQL
  10. Java内部类序列化