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

TypeError:筛选数组中对象的值时,obj[key].includes不是函数

TypeError: 筛选数组中对象的值时,objkey.includes不是函数

这个错误是由于尝试在一个非数组类型的值上调用.includes()方法而引起的。.includes()是数组的方法,用于检查数组中是否包含指定的值。

要解决这个错误,需要确保objkey是一个数组类型的值。可以通过以下几种方式来处理:

  1. 检查objkey是否为数组类型:
    • 使用Array.isArray()方法来检查objkey是否为数组。如果不是数组,则需要进行相应的处理,例如转换为数组或者使用其他适当的方法。
  2. 确保objkey是数组类型:
    • 如果objkey不是数组,可以使用Array.from()方法将其转换为数组。例如:objkey = Array.from(objkey)。
  3. 避免调用.includes()方法:
    • 如果objkey不是数组,可以考虑使用其他方法来筛选数组中的对象值,例如使用Array.filter()方法结合条件语句来筛选。

以下是一个示例代码,演示如何处理这个错误:

代码语言:javascript
复制
// 示例对象
const obj = {
  key: [1, 2, 3, 4, 5]
};

// 检查obj[key]是否为数组类型
if (Array.isArray(obj[key])) {
  // 使用.includes()方法筛选数组中的对象值
  const filteredArray = obj[key].filter(value => value.includes('some value'));
  console.log(filteredArray);
} else {
  console.log('obj[key] is not an array');
}

在这个示例中,我们首先使用Array.isArray()方法检查objkey是否为数组类型。如果是数组,我们可以安全地使用.includes()方法来筛选数组中的对象值。如果不是数组,我们会得到一个错误提示。

请注意,以上示例中没有提及腾讯云相关产品和产品介绍链接地址,因为这些内容与解决TypeError错误没有直接关联。如果您有其他关于云计算或其他相关领域的问题,我将很乐意为您提供更多信息和帮助。

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

相关·内容

就因为JSON.stringify,我的年终奖差点打水漂了

,少了value key,导致后端无法读取value值进行报错 // 具体原因是`undefined`、`任意的函数`以及`symbol值`,出现在`非数组对象`的属性值中时在序列化过程中会被忽略 console.log...replacer 可选 如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理; 如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中...❞ 特性一 undefined、任意的函数以及symbol值,出现在非数组对象的属性值中时在序列化过程中会被忽略 undefined、任意的函数以及symbol值出现在数组中时会被转换成 null。...`任意的函数`以及`symbol值`被`单独转换`时,会返回 undefined } else if (commonKeys1.includes(type)) { // 直接得到undefined...`以及`symbol值`,出现在`非数组对象`的属性值中时在序列化过程中会被忽略 if (!

1.1K20
  • 盘点那些 JS 手写题

    ['object', 'function'].includes(typeof proto)) { throw new TypeError("proto必须为对象或者函数"); } function...== 'function') { throw new TypeError('第一个参数不是构造函数'); } // 新建一个空对象,对象的原型为构造函数的 prototype 对象...从ECMAScript 5 开始可以使用类数组对象。 返回值:调用有指定this值和参数的函数的结果。...如果使用new运算符构造绑定函数,则忽略该值。当使用 bind 在 setTimeout 中创建一个函数(作为回调提供)时,作为 thisArg 传递的任何原始值都将转换为 object。...temp函数不被执行而是打印,了解JS的朋友都知道对象的toString是修改对象转换字符串的方法,因此代码中temp函数的toString函数return m值,而m值是最后一步执行函数时的值m=12

    1.4K30

    JS 原生方法原理探究(八):如何实现 JSON.stringify()?

    但是值为 undefined / Symbol / 函数类型的属性、类型为 Symbol 的属性会丢失 类数组对象 同对象字面量 基本类型的包装对象 一般返回包装对象的 valueOf(string 类型前后要加引号...不可继续遍历的类型:包括基本类型的包装对象、Error 对象、正则对象、日期对象函数。...检测循环引用 循环引用指的是对象的结构是回环状的,不是树状的: // 下面的对象/数组存在循环引用 let obj = {}; obj.a = obj; let obj1 = { a: { b: {}...考虑最简单的情况,只有 key 对应的 value 为对象或者数组时,才可能存在循环引用,因此在遍历 key 的时候,判断 value 为对象或者数组之后才往下处理循环引用。...如果检测到当前 key 对应的 value 在数组中出现过,则证明引用了某个父级对象,就可以抛出错误;如果没出现过,则加入数组中,更新父级链 所以一个通用的循环引用检测函数如下: function checkCircular

    2K50

    差点因为 JSON.stringify 丢了奖金...

    1、如果目标对象有toJSON()方法,它负责定义哪些数据将被序列化。 2、 Boolean、Number、String 对象在字符串化过程中被转换为对应的原始值,符合传统的转换语义。...3、 undefined、Functions 和 Symbols 不是有效的 JSON 值。...如果在转换过程中遇到任何此类值,则它们要么被忽略(在对象中找到),要么被更改为 null(当在数组中找到时)。...7、 所有其他 Object 实例(包括 Map、Set、WeakMap 和 WeakSet)将仅序列化其可枚举的属性。 8、找到循环引用时抛出TypeError(“循环对象值”)异常。...9、 尝试对 BigInt 值进行字符串化时抛出 TypeError(“BigInt 值无法在 JSON 中序列化”)。 自己实现 JSON.stringify 理解一个函数的最好方法是自己实现它。

    45710

    有个朋友因为 JSON.stringify 差点丢了奖金

    1、如果目标对象有toJSON()方法,它负责定义哪些数据将被序列化。 2、 Boolean、Number、String 对象在字符串化过程中被转换为对应的原始值,符合传统的转换语义。...3、 undefined、Functions 和 Symbols 不是有效的 JSON 值。...如果在转换过程中遇到任何此类值,则它们要么被忽略(在对象中找到),要么被更改为 null(当在数组中找到时)。...7、 所有其他 Object 实例(包括 Map、Set、WeakMap 和 WeakSet)将仅序列化其可枚举的属性。 8、找到循环引用时抛出TypeError(“循环对象值”)异常。...9、 尝试对 BigInt 值进行字符串化时抛出 TypeError(“BigInt 值无法在 JSON 中序列化”)。 自己实现 JSON.stringify 理解一个函数的最好方法是自己实现它。

    43720

    2022秋招前端面试题(九)(附答案)

    __proto__ === p.constructor.prototype) // false复制代码可以看到修改原型的时候p的构造函数不是指向Person了,因为直接给Person的原型对象直接用对象赋值时...利用一个属性保存系统中目前所占空间大小,每次存储都增加该属性。当该属性值大于 1M 时,需要按照时间排序系统中的数据,删除一定量的数据保证能够存储下目前需要存储的数据。...,也就是通过 [Prototype] 链接到了这个原型对象然后说一下 JS 中属性的查找:当我们试图引用实例对象的某个属性时,是按照这样的方式去查找的,首先查找实例对象上是否有这个属性,如果没有找到,就去构造这个实例对象的构造函数的...new操作符的实现步骤如下:创建一个对象将构造函数的作用域赋给新对象(也就是将对象的proto属性指向构造函数的prototype属性)指向构造函数中的代码,构造函数中的this指向该对象(也就是为这个对象添加属性和方法...(可选): 当执行回调函数 callback 时,用作 this 的值。

    2.6K30

    JS开发常用工具函数

    如果一个值被认为是类数组,那么它不是一个函数,并且value.length是个整数,大于等于 0,小于或等于 Number.MAX_SAFE_INTEGER。...(typeof v === 'string' || typeof v === 'number') || isNaN(v) } 37、max:求取数组中非NaN数据中的最大值 function max(arr...Math.max.apply(null, arr) : undefined } //max([1, 2, '11', null, 'fdf', []]) ==> 11 38、min:求取数组中非NaN数据中的最小值...:用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false,可指定开始查询的位置 Array.prototype.includes = Array.prototype.includes...(result = value, true) : false }) return result } 45、arr.findIndex :返回数组中通过测试(函数fn内判断)的第一个元素的下标

    2.4K80

    前端面试复习计划,保熟~

    ,该方法接受一个由Promise对象组成的数组作为参数(Promise.all()方法的参数可以不是数组,但必须具有Iterator接口,且返回的每个成员都是Promise实例),注意参数中只要有一个实例触发...需要注意的是,立即resolve()的 Promise 对象,是在本轮“事件循环”(event loop)的结束时执行,而不是在下一轮“事件循环”的开始时。...== null;}这个函数只能判断 obj 是否是对象,无法判断其具体是数组还是对象。哪些操作会造成内存泄漏?...(可选): 当执行回调函数 callback 时,用作 this 的值。...返回值:数组中有至少一个元素通过回调函数的测试就会返回 true;所有元素都没有通过回调函数的测试返回值才会为 false。

    1.2K40

    es3-es10整理

    包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。...注意,一般来说,不可扩展对象的属性可能仍然可被删除。尝试将新属性添加到不可扩展对象将静默失败或抛出TypeError(最常见的情况是strict mode (en-US)中,但不排除其他情况)。...如果一个属性的值是个对象,则这个对象中的属性是可以修改的,除非它也是个冻结对象。数组作为一种对象,被冻结,其元素不能被修改。没有数组元素可以被添加或移除。...2017年,ECMAScript第八个版本 async/await Object.values() MDN:Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用...2, 3] Object.entries() MDN:Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于

    1.4K20

    【中高级前端】必备,30+高频手写题及详细答案(万字长文),看“你”怎么难倒我

    对象或值转换为 JSON 字符串,如果指定了一个 replacer 函数,则可以选择性地替换值,或者指定的 replacer 是数组,则可选择性地仅包含数组指定的属性。...`任意的函数`以及`symbol值`被`单独转换`时,会返回 undefined } else if (commonKeys1.includes(type)) { // 直接得到undefined...`以及`symbol值`出现在`数组`中时会被转换成 `null` return commonKeys1.includes(typeof it) ?...`以及`symbol值`,出现在`非数组对象`的属性值中时在序列化过程中会被忽略 if (!...读和写都是在使用数据 假设不管是读还是写,我们都把对应的key值放到数组的末尾,那么是不是意味着数组的头部就是最久未使用的了呢?

    1.1K30

    32个手撕JS,彻底摆脱初级前端(面试高频)

    // 则数组的第一个有效值作为累加器的初始值 if (accumulator === undefined) { while (k < len && !...(k in O)) { k++; } // 如果超出数组界限还没有找到累加器的初始值,则TypeError if (k >= len) { throw new...执行构造函数并将this绑定到新创建的对象上。 判断构造函数执行返回的结果是否是引用数据类型,若是则返回构造函数执行的结果,否则返回创建的对象。...res : obj; } 15.instanceof instanceof运算符用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上。...观察者模式:定义了对象间一种一对多的依赖关系,当目标对象Subject发生改变时,所有依赖它的对象Observer都会得到通知。

    1.8K30

    16期-熬夜7天,我总结了JavaScript与ES的25个重要知识点!

    我们可以为任何参数分配默认值 function dada(param = {}) { 函数返回多个值(函数只能返回一个值,但可以是一个复杂的对象或多维数组) function f() { return...,被代理的值在Promise对象创建时可能是未知的,它允许你为异步操作的成功和失败分别绑定相应的处理方法,这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的...handler 一个对象,其属性是当执行一个操作时定义代理的行为的函数 如果不想再调用key的时候,返回undefined: console.log(o.dada || '') 使用Proxy let...,Promise 该方法判断一个数组是否包含一个指定的值,返回布尔值 let da1 = [1,2,3]; console.log(da1.includes(2)); arr.find(function...,并将所有元素与遍历到的子数组中的元素合为一个新数组。

    65820

    深浅拷贝

    ,或者是对个 参数为一个时且为一个对象时,该方法会返回该对象 参数为多个时,且参数都为对象,该方法会将源对象上的属性添加(重复的属性后面的对象会覆盖前面对象的属性)到目标对象。...的结果,时间将只是字符串的形式,而不是对象的形式。...如果obj里有RegExp(正则表达式的缩写)、Error对象,则序列化的结果将只得到空对象; 如果obj里有函数,undefined,则序列化的结果会把函数或 undefined丢失; 如果obj里有...如果对象中存在循环引用的情况也无法正确实现深拷贝; 4.自定义对象数组深拷贝 function deepClone(obj) { if (typeof obj !...== "object") { return "克隆的值不是对象哦"; } //判断拷贝的要进行深拷贝的是数组还是对象,是数组的话进行数组拷贝,对象的话进行对象拷贝 var objClone

    43941

    熬夜7天,我总结了JavaScript与ES的25个重要知识点!

    我们可以为任何参数分配默认值 function dada(param = {}) { 函数返回多个值(函数只能返回一个值,但可以是一个复杂的对象或多维数组) function f() { return...,被代理的值在Promise对象创建时可能是未知的,它允许你为异步操作的成功和失败分别绑定相应的处理方法,这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是一个能代表未来出现的结果的...handler 一个对象,其属性是当执行一个操作时定义代理的行为的函数 如果不想再调用key的时候,返回undefined: console.log(o.dada || '') 使用Proxy let...,Promise 该方法判断一个数组是否包含一个指定的值,返回布尔值 let da1 = [1,2,3]; console.log(da1.includes(2)); arr.find(function...,并将所有元素与遍历到的子数组中的元素合为一个新数组。

    1.8K30

    热乎的~前端面试题(昨天)

    • vue3: • 在 vue3 中主要使用了 Reactive API 和 Proxy 来实现响应式 • reactive() 函数会讲一个普通对象转换成响应式对象,这个函数内部使用了 ES6 的 proxy...把需要被拦截的数组类型的数据原型指向改造后的原型方法 const arrayProto = Array.prototype // 获取Array的原型 function def (obj, key)...-- 在这个demo中,我们首先创建了一个Vue实例,然后在mounted钩子函数中,遍历data对象的所有属性,并使用defineReactive方法来对每个属性进行数据劫持。...在实现深层次监听的时候,不是一次性递归所有的属性为其添加监听,而是只有在数据对象属性被访问的时候才会添加 <!...: [{name: 'Mary', age: 22}, {name: 'Peter', age: 28}] // originalArr 表示要被筛选的对象数组 // filterArr 则是用来进行筛选的参照数组

    12410
    领券