首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

返回javascript中最后一个非空对象的索引

在JavaScript中,要返回最后一个非空对象的索引,可以使用以下方法:

方法一:使用for循环从后往前遍历数组,找到第一个非空对象的索引。

代码语言:txt
复制
function findLastNonNullIndex(arr) {
  for (let i = arr.length - 1; i >= 0; i--) {
    if (arr[i] !== null && arr[i] !== undefined) {
      return i;
    }
  }
  return -1; // 如果数组中没有非空对象,则返回-1
}

const arr = [null, undefined, 1, '', {}, null, 'hello'];
const lastIndex = findLastNonNullIndex(arr);
console.log(lastIndex); // 输出6,即最后一个非空对象的索引

方法二:使用数组的reduceRight方法从后往前遍历数组,找到第一个非空对象的索引。

代码语言:txt
复制
function findLastNonNullIndex(arr) {
  return arr.reduceRight((acc, curr, index) => {
    if (acc === -1 && (curr !== null && curr !== undefined)) {
      return index;
    }
    return acc;
  }, -1);
}

const arr = [null, undefined, 1, '', {}, null, 'hello'];
const lastIndex = findLastNonNullIndex(arr);
console.log(lastIndex); // 输出6,即最后一个非空对象的索引

以上两种方法都可以找到最后一个非空对象的索引。在这个问题中,没有特定的云计算、IT互联网领域的名词或腾讯云产品与之相关,因此不需要提供相关链接。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JavaScript】内置对象 - 数组对象 ④ ( 索引方法 | 查找给定元素一个索引 | 查找给定元素最后一个索引 | 索引方法案例 - 数组元素去重 )

文章目录 一、索引方法 1、查找给定元素一个索引 - indexOf() 2、查找给定元素最后一个索引 - lastIndexOf() 二、索引方法案例 - 数组元素去重 1、需求分析 2、代码实现...该索引值 ; 返回值 就是 在数组一个 被找到 指定元素 索引位置 , 如果没有找到返回 -1 ; 参考文档 : https://developer.mozilla.org/zh-CN/docs...() 调用 Array 数组对象 lastIndexOf() 方法 可以 查找给定元素最后一个索引 , 语法如下 : lastIndexOf(searchElement) lastIndexOf(...就是 在数组 最后一个 被找到 指定元素 索引位置 , 如果没有找到返回 -1 ; 参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript...- 数组元素去重 1、需求分析 给定一个数组 , [9, 5, 2, 7, 5] 将数组重复元素删除 , 也就是将上述数组 重复元素 5 删除 ; 创建一个数组 , 遍历旧数组 , 遍历每个旧数组元素时

16110
  • JavaScript】内置对象 - 字符串对象 ④ ( 根据索引位置返回字符串字符 | 代码示例 )

    文章目录 一、根据索引位置返回字符串字符 1、charAt 函数获取字符 2、charCodeAt 函数获取字符 ASCII 码 3、数组下标获取字符 String 字符串对象参考文档 : https...://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String 一、根据索引位置返回字符串字符...根据索引位置返回字符 : 给定一个 字符串 索引值 , 获取 字符串 索引对应字符 ; charAt(index) 函数 : 获取 index 索引对应 字符 ; charCodeAt(...() 函数 是 String 字符串对象方法 , 用于返回在指定位置字符 ; 参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript...指定索引位置 字符 ASCII 码 , 函数原型如下 : charCodeAt(index) index 参数 : 字符串索引值 , 从 0 开始计数 , 如果传入类型不是 number 类型

    10310

    SpringBoot返回枚举对象所有属性以对象形式返回一个@JSONType解决)

    一、前言 最近小编在开发遇到个问题,就是关于枚举方面的使用。一些固定不变数据我们可以通过枚举来定义,减少对数据库查询。是一种常见开发技巧!...常见场景需求是:通过某一个属性获取对应枚举属性一个值;还有就是常量枚举,比如一下统一返回状态和编码! ==小编需求是把枚举所有属性都取出来,转成实体类那种返回给前端!...== 最简单解决就是拿到所有的然后便利加到新集合里,这样还需要定义一个实体类来接收转一下!...这样有点麻烦,小编也是无意发现了,项目中有以前大佬留下来一个注解@JSONType(serializeEnumAsJavaBean = true),一加上只需要我们使用枚举.values()即可直接帮助我们返回了..."秋" }, { "code": "004", "name": "冬" } ] 六、总结 这样就完美完成枚举转实体类了,而且还没有新增实体类,一个注解解决哈

    3.8K10

    Excel公式:提取行一个

    标签:Excel公式,INDEX函数,MATCH函数 有时候,工作表行数据可能并不在第1个单元格,而我们可能会要获得行一个单元格数据,如下图1所示。...图1 可以使用INDEX函数/MATCH函数组合来解决这个问题,如果找不到的话,再加上IFERROR函数来进行错误处理。...在单元格H4输入公式: =IFERROR(INDEX(C4:G4,0,MATCH("*",C4:G4,0)),"") 然后向下拖拉复制公式至数据单元格末尾。...公式,使用通配符“*”来匹配第一个找到文本,第二个参数C4:G4指定查找单元格区域,第三个参数零(0)表示精确匹配。 最后,IFERROR函数在找不到单元格时,指定返回值。...这里没有使用很复杂公式,也没有使用数组公式,只是使用了常用INDEX函数和MATCH函数组合来解决。公式很简单,只是要想到使用通配符(“*”)来匹配文本。

    4.2K40

    java判断一个对象是否为_Java判断对象是否为方法详解

    这两种StringUtils工具类判断对象是否为是有差距: StringUtils.isEmpty(CharSequence cs); //org.apache.commons.lang3包下StringUtils...类,判断是否为方法参数是字符序列类,也就是String类型 StringUtils.isEmpty(Object str); //而org.springframework.util包下参数是Object...str)源码: public static boolean isEmpty(Object str) { return (str == null || “”.equals(str)); } 基本上判断对象是否为...接下来就是判断数组是否为 list.isEmpty(); //返回boolean类型。...b)(A与B差): {1,2,3} CollectionUtils.subtract(b, a)(B与A差): {4,6,7} 以上所述是小编给大家介绍Java判断对象是否为方法详解整合,希望对大家有所帮助

    3.2K20

    2023-04-29:一个序列 宽度 定义为该序列中最大元素和最小元素差值。 给你一个整数数组 nums ,返回 nums 所有 子序列 宽度之和

    2023-04-29:一个序列 宽度 定义为该序列中最大元素和最小元素差值。...给你一个整数数组 nums ,返回 nums 所有 子序列 宽度之和由于答案可能非常大,请返回对 109 + 7 取余 后结果。...子序列 定义为从一个数组里删除一些(或者不删除)元素,但不改变剩下元素顺序得到数组例如,3,6,2,7 就是数组 0,3,1,6,2,2,7 一个子序列。输入:nums = 2,1,3。...计算宽度我们使用 A 表示当前子序列宽度,即末尾元素与首元素差值,使用 B 表示上一个子序列宽度,即前一次循环中 A 值。...时间复杂度:排序时间复杂度为 O(nlogn),计算宽度时间复杂度为 O(n),因此总时间复杂度为 O(nlogn)。

    70100

    python面试题-【二分法查找】给定一个已排序重复整数数组和一个目标值,如果找到目标,则返回索引

    前言 给定一个已排序重复整数数组和一个目标值,如果找到目标,则返回索引。如果不是,返回索引按顺序插入时位置。 题目 给定一个已排序重复整数数组和一个目标值,如果找到目标,则返回索引。...如果不是,返回索引按顺序插入时位置。...3.如果某一步数组为,则表示找不到目标元素 如下图,数组中有目标元素,查找21 如下图,数组没有目标元素,查找70 直到 low > high 查找失败 python3 二分法查找 python3...low = mid + 1 else: high = mid - 1 return low # 没找到则返回其位置左边下标...由于第三轮比较target目标值7 大于中间数字6,此时low=mid=high了,依然满足while low <= high,所以还会有下一轮比较 此时low = mid + 1 循环结束,最终返回左边下标

    84720

    JavaScript engine基础: Shapes and Inline Caches

    你可以把数组看作对象一种特例。不同之处在于,数组对数组索引进行了特殊处理。这里数组索引是 ECMAScript 规范一个特殊术语。在 JavaScript ,数组仅限于 2³²-1 项。...图片 如果访问一个属性,例如 object.y,JavaScript 引擎会在 JSObject 查找键'y',然后加载相应属性,最后返回[[value]]。...例如,在本例,我们不需要在最后一个形状存储有关 "x "信息,因为它可以在链更早位置找到。...最后,我们将得到一个包含单个值 JSObject 和两个形状:形状和只有 x 属性形状。 第二个示例一开始也是一个对象 b,但随后添加了一个不同属性 "y"。...最后我们有了两个形状链,总共有三个形状。 这是否意味着我们总是从形状开始?不一定。引擎会对已经包含属性对象字面进行一些优化。

    24010

    C1 能力认证——JS基础

    true,所以变量str会被赋值为hello # 即为真 0即为真 ''' 字符串:即为真 数字:0NAN即为真 对象nullundefined即为真 []{}为真 ''' 要想是一下...方法 说明 length 访问一个数组length属性,返回该数组长度,即该数组元素个数 forEach() 对数组每个元素执行一次给定函数 indexOf() 返回在数组可以找到一个给定元素一个索引...map() 创建一个新数组,其结果是该数组每个元素是调用一次提供函数后返回值。 pop() 从数组删除最后一个元素,并返回该元素值。此方法更改数组长度。...push() 将一个或多个元素添加到数组末尾,并返回该数组新长度。 reverse() 将数组中元素位置颠倒,并返回该数组。数组一个元素会变成最后一个,数组最后一个元素变成第一个。...所以,排序后数组,0索引位置值是王五这个对象,1索引位置值是张三这个对象,2索引位置值是李四这个对象

    1.5K20

    JavaScript 权威指南-学习笔记(一)

    JavaScript 权威指南-学习笔记 JavaScript是一门高级、动态、解释型变成语言,非常适合面向对象和函数式编程风格。 JavaScript变量是无类型。...= {x:0, y:0}; //包含两个属性对象 使用new创建对象 let a = new Object(); //创建一个对象,与{}相同 let b = new Array(); /.../创建一个数组,与[]相同 let c = new Date(); //创建一个表示当前时间日期对象 let d = new Map(); //创建一个映射对象,用于存储键值对 使用Object.create..., true, "a",; // 3种不同类型元素,最后还有一个逗号 Array()创建数组 不传参调用 ``` let a = new Array(); // 创建一个数组 ``` 创建一个数组,...4, 3, 2,1, "testing, testing"); // 创建一个指定长度数组 ``` Array.of()创建一个带元素数组 Array.of() // =>[]; 返回没有参数数组

    74900

    前端面试02-JavaScript

    null是javascript关键字,可以认为是对象类型,它是一个对象指针,和其他语言一样都代表“值”,不过undefined却是javascript才有的。...javascript高级程序设计:在使用var声明变量但未对其加以初始化时,这个变量值就是undefined。null值则是表示对象指针。...slice() 提取字符串片断,并在新字符串返回被提取部分。不包含结束索引 split() 把字符串分割为字符串数组。 substr() 从起始索引号提取字符串中指定数目的字符。...创建一个对象,并且 this 变量引用该对象,同时还继承了该函数原型。 属性和方法被加入到 this 引用对象。 新创建对象由 this 所引用,并且最后隐式返回 this 。...arr.lastIndexOf(); //方法可返回一个指定字符串值最后出现位置,在一个字符串指定位置从后向前搜索。

    1.1K10

    前端入门11-JavaScript语法之数组声明正文-数组

    那么本章其实也就是学习 JavaScript 数组用法: 相关术语 稀疏数组 稀疏数组就是指不连续索引数组,数组容器某些索引、无值。...相反,正常连续索引数组就是非稀疏数组,容器各元素紧密堆放,如: 稀疏数组: ? 稀疏数组 稀疏数组: ? 稀疏数组 数组内每个元素紧密排列。...所以,这个概念主语是对象,而对象如果是通过 [] 来操作它属性时,属性值可以很灵活,不是必须满足标识符规定,只要最后能计算出一个字符串值即可。...length 表示是数组里最大索引 + 1,因为 JavaScript 分稀疏数组和稀疏数组。...a[11] 因为数组也是对象,所以 JavaScript 数组操作不存在越界场景,当试图查询不存在属性时,只会返回 undefinded。

    93520

    JavaScript基础教程

    y : -y) 最后,每当JavaScript期待一个语句,你也可以用一个表达式代替。例如: foo(bar(7, 1)); foo(...)...两者之间主要区别在于他们是如何被比较:每一个对象一个独一无二标志,并且仅和自己相等: var obj1 = {}; // 一个对象 var obj2 = {}; // 另一个对象 obj1...对象类型 所有原始值值都是对象。...或者你也可以使用严格相等(==)和严格不等(!=)。 经验规则:总是用严格运算符,假装严格运算符不存在。严格相等更安全。 深入阅读 在JavaScript什么时候使用==是正确?...('b') // 查找给定项在数组索引,若不存在返回-1, // 1 arr.indexOf('y') // -1 arr.join('-') // 将元素拼接为一个字符串,'x-b-c'

    2.6K20
    领券