作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码:
const array1 = [{a: 'abc', b: 'cd'}, {a: 'abc', b: 'xyz'}, {a: 'abc',
b: 'mno'}];
let obj = array1.reduce(function(result, item, index){
result[index] = item
return result;
}, {});
let dealId = 123;
let value = {};
let array2 = [];
for (var property in obj) {
value[dealId] = array2.push(obj[property]);
}
console.log(value)
这个的输出是对象 { 123: 3 }
但我想要,这就是我所期待的。
对象 { 123: [{a: 'abc', b: 'cd'}, {a: 'abc', b: 'xyz'}, {a: 'abc', b: 'mno'}] }
为什么我得到的是 3 而不是数组?如何获取数组?
最佳答案
Array.prototype.push
返回数组的新长度,而不是数组本身。您的循环将值 1、2 和 3 分配给同一个 value[dealId]
。
相反,您可以将赋值移到循环之外:
for (var property in obj) {
array2.push(obj[property]);
}
value[dealId] = array2;
或者您可以简单地使用Object.values
:
value[dealId] = Object.values(obj);
但请注意,这不会列出继承的属性。
关于javascript - 如何从javascript中的索引属性获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52072676/
我是一名优秀的程序员,十分优秀!