首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么[].slice.call()返回“空插槽”?

为什么[].slice.call()返回“空插槽”?
EN

Stack Overflow用户
提问于 2019-03-31 04:54:22
回答 2查看 84关注 0票数 2

我试图将一个复杂的对象包装在一个长度为1的数组中(即该对象是该数组中的唯一条目),并希望在类构造函数中完成此操作。。。为了达到这个目的,我一直在使用[].slice.call(),当我出于测试目的而使用时,我在控制台中尝试了以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
foo = {"a":{"a1":1},"b":{"b1":2},length: 2};
[].slice.call(foo);

我得到了一个长度为2的数组,其中有“两个空插槽”。

假设[].slice.call({"a": 1, "b": 2, length: 2}产生了[1, 2],我期望得到一个长度为2的数组,如下所示:{"a1":1},{"b1":2},而不是"two empty slots“。[].slice.call只在“一维”对象上工作,还是有其他事情在发生?非常感谢提前,如果有人可以请澄清!

EN

回答 2

Stack Overflow用户

发布于 2019-03-31 05:04:13

slice将只迭代对象的数字索引属性。请参阅spec

让ToInteger(start).成为

  1. relativeStart

(因此,如果startundefined,就像在没有参数的情况下调用slice时一样,则relativeStart0)

然后,它将遍历从relativeStart (如果relativeStart为负数,则为0 )到对象的length属性的值的数字索引:

  1. 如果relativeStart为负,则k为max((len + relativeStart),0);否则k为min(relativeStart,len)。

  1. 如果relativeEnd为负,则最终为relativeEnd((len+ relativeEnd),0);否则最终为min(relativeEnd,len).
  2. Repeat,k< final

  • (将objk推送到正在创建的新的类似数组的对象中)

所以:

是[].slice.call只在“一维”对象上工作,还是有其他事情在发生?

它仅适用于具有数字属性的对象。如果您有非数值型属性,则不会使用slice迭代这些属性。

如果你想

将一个复杂的对象包装在一个长度为1的数组中(即,该对象是该数组中唯一的条目)

然后使用[foo],例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const foo = {"a":{"a1":1},"b":{"b1":2},length: 2};
const wrappedFoo = [foo];
console.log(wrappedFoo);

有没有简单的办法把{"a":{"a1":"foo"},“b”:{“b1”:“”}}变成{"a1":"foo"},{"b1":"bar"}?

使用Object.values将对象的值提取到数组中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const obj = {"a":{"a1":"foo"},"b":{"b1":"bar"}};
const arr = Object.values(obj);
console.log(arr);

票数 3
EN

Stack Overflow用户

发布于 2019-03-31 05:08:24

正如CertainPerformance已经提到的,您用作call()的参数的object将作为slice()this参数传递,它只适用于对象的数值属性。如果您使用数字属性,它将按照您的预期工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let foo1 = {"0": 1, "1": 2, length: 2};
console.log([].slice.call(foo1));

let foo2 = {"0": {"a1":1}, "1": {"b1":2}, length: 2};
console.log([].slice.call(foo2));
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

然而,这是一种获取Object.values()已经提供的功能的罕见方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let foo1 = {"0": 1, "1": 2};
console.log(Object.values(foo1));

let foo2 = {"0": {"a1":1}, "1": {"b1":2}};
console.log(Object.values(foo2));
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55437996

复制
相关文章
tp5如何创建空对象(用于接口返回json空对象)
{ “code”: 1, “msg”: “成功”, “time”: “1660123209”, “data”: {}, }
超级小可爱
2023/02/20
4.2K0
Mybatis查询结果为空时,为什么返回值为NULL或空集合?
一行数据记录如何映射成一个 Java 对象,这种映射机制是 MyBatis 作为 ORM 框架的核心功能之一,也是我们这篇文章需要学习的内容。
架构师修炼
2022/07/30
5.5K0
Mybatis查询结果为空时,为什么返回值为NULL或空集合?
vue 组件插槽_vue插槽的使用
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
5820
v-slot匿名插槽、具名插槽及作用域插槽
只要是没有具体分配的内容,都会给到匿名插槽或者 同时在子组件中需替换为用于占位,即在modal组件中自定义的内容都会显示在slot占位的位置
青梅煮码
2023/01/14
3860
什么是[].slice.call(arguments)
今天刷牛客的时候碰到一道题是这样的,[].slice.call()这种用法之前没见过
henu_Newxc03
2022/05/28
3000
什么是[].slice.call(arguments)
插槽slot
上面代码中,组件标签内的h1是要插入子组件内部的元素,子组件内使用slot标签接收父组件插入的h1标签。
小小杰啊
2022/12/21
7030
Vue插槽详解 | 什么是插槽?
什么是插槽?插槽的指令为v-slot,它目前取代了slot和slot-scope,插槽内容,vue实例一套内容分发的api,将slot元素作为承载分发内容的出口。
达达前端
2019/12/16
2.4K0
Vue插槽详解 | 什么是插槽?
什么是作用域插槽?插槽与作用域插槽的区别
创建组件虚拟节点时,会将组件的儿子的虚拟节点保存起来。当初始化组件时,通过插槽属性将儿 子进行分类 {a:[vnode],b[vnode]}
全栈程序员站长
2022/09/20
1.3K0
什么是作用域插槽?插槽与作用域插槽的区别
vue插槽
父组件:(在组件外, 我们可以往插槽里填入任何元素, dialog-a为组件的名称)
leader755
2022/03/09
3830
(九)插槽
在项目开发种我们只使用props 进行传值往往是完成不了功能需求的,要想开发高阶组件就需要使用插槽了slot,比如在子组件当中动态添加html 文件就需要使用插槽了
老怪兽
2023/02/22
3500
VUE2.0 学习(二十七)组件中的插槽,默认插槽,具名插槽,作用域插槽
组件A里面的有一个插槽,并且数据是在A组件里面,B组件是要使用A组件,但是B组件要将A组件里面的数据进行不同的展示,数据是一样的,但是展示的格式是不一样的。这个需要咋做
一写代码就开心
2021/10/28
1.4K0
VUE2.0 学习(二十七)组件中的插槽,默认插槽,具名插槽,作用域插槽
插槽slot
举个栗子比如京东商城移动app每个页面都有一个导航栏,虽然架构相似,但是每个部分功能都不同,其实这就是插槽,用了同一个组件,但是组件内部只是留了三个位置,没有指定具体内容,由父组件负责扩展和定制具体内容.
名字是乱打的
2021/12/23
7410
插槽slot
为什么1000==1000返回false,100==100返回true?
这可能是个讨论得较多的话题,但是我觉得它很有趣:为什么1000==1000返回false,100==100返回true?
三哥
2018/12/19
1.2K0
组件插槽
1.组件插槽 组件插槽的作用 父组件向子组件传递内容 组件的最大特性就是复用性,而用好插槽能大大提高组件的可复用能力 1.1组件插槽基本用法   1.插槽位置   2.插槽内容 1.2匿名插槽 <div id="app"> <!-- 这里的所有组件标签中嵌套的内容会替换掉slot 如果不传值 则使用 slot 中的默认值 --> <alert-box>有bug发生</alert-box> <alert-box>有一个警告</alert-box> <al
梨涡浅笑
2022/01/06
4770
组件插槽
Vue 插槽
通过在标签内使用slot属性指定值,组件内使用solt标签通过name接收slot属性值
HammerZe
2022/05/09
6930
Vue 插槽
使用 python-jenkins 执行脚本返回为空
最近在做一个发布系统的整合, 使用到 Jenkins API的 Python 的 python-jenkins 的包.
用户1416054
2018/08/02
1.7K0
java处理非空判断并返回不同提示信息
先定义一个字符串,进行判断如果长度等于0就代表未出现错误就判断当前参数是否合格,合格则为“”,不合格则往msg中放入提示信息,在进行下一条验证的时候msg长度已经不为0所以无需判断直接跳过
余生大大
2022/11/02
7460
Vue 插槽之插槽内容学习总结
父组件中引用支持插槽内容的子组件,形如以下(假设子组件为NavigationLink.vue)
授客
2021/03/16
5980
Vue 插槽之插槽内容学习总结
Vue 插槽之 作用域插槽「建议收藏」
现在我有如下需求,子组件 <user /> 中此时有一条用户的信息(userInfo);我要在父组件通过插槽展示这个用户的姓名(userInfo.name);
全栈程序员站长
2022/07/28
3500
Vue 插槽之 作用域插槽「建议收藏」
作用域插槽(作用域插槽传值)
一:假设第一个场景,需要你写一个商品卡片组件,并通过循环去展示多个卡片,并且要求能响应每个卡片上的图片或者其他内容的点击事件而跳转到商品详情页,你会怎么写?
全栈程序员站长
2022/07/28
5580
作用域插槽(作用域插槽传值)

相似问题

IE8返回“预期的对象”[].slice.call

13

用插槽返回数据

21

为什么我的亚马逊插槽返回未定义?

11

如何检查插槽是否为空?

12

javascript中的[].slice.call()模式

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文