首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环对象,并在数组中累计返回每个键的长度。

循环对象,并在数组中累计返回每个键的长度。
EN

Stack Overflow用户
提问于 2019-09-02 12:55:28
回答 2查看 36关注 0票数 0

我有一个对象,我想遍历它,并返回数组中每个键的累积长度。下面是对象和理想输出:

代码语言:javascript
复制
const books = {
    "book_1": ["image-1", "image-2", "image-3"], // 3
    "book_2": ["image-1"], // 1
    "book_3": ["image-1", "image-2"] // 2
}

// Ideal Output
[3, 4, 6]

我知道不可能在一个对象上循环,但是我使用了Object.key().reduce()来获取每个键的长度,我只是想不出如何将它们拼凑在一起。任何帮助都将不胜感激。

代码语言:javascript
复制
const books = {
    "book_1": ["image-1", "image-2", "image-3"], // 3
    "book_2": ["image-1"], // 1
    "book_3": ["image-1", "image-2"] // 2
}

console.log(Object.keys(books).reduce(function (accumulator, currentValue, index) {
  console.log(books[Object.keys(books)[index]].length)
  
  return currentValue;
}, []))

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-02 13:02:51

代码语言:javascript
复制
const books = {
    "book_1": ["image-1", "image-2", "image-3"], // 3
    "book_2": ["image-1"], // 1
    "book_3": ["image-1", "image-2"] // 2
}

console.log(Object.entries(books).reduce((acc, [key, array]) => {
  acc.push((acc.slice(-1)[0] || 0) + array.length);
  return acc;
}, []))

但是..。由于键订单没有得到保证,所以您可能会以

代码语言:javascript
复制
const books = {
    "book_2": ["image-1"], // 1
    "book_1": ["image-1", "image-2", "image-3"], // 3
    "book_3": ["image-1", "image-2"] // 2
}

console.log(Object.entries(books).reduce((acc, [key, array]) => {
  acc.push((acc.slice(-1)[0] || 0) + array.length);
  return acc;
}, []))

你想要一个特别的顺序我猜-所以,把钥匙分类

代码语言:javascript
复制
const books = {
    "book_2": ["image-1"], // 1
    "book_1": ["image-1", "image-2", "image-3"], // 3
    "book_3": ["image-1", "image-2"] // 2
}

console.log(Object.entries(books).sort(([a], [b]) => a.localeCompare(b)).reduce((acc, [key, array]) => {
  acc.push((acc.slice(-1)[0] || 0) + array.length);
  return acc;
}, []))

票数 1
EN

Stack Overflow用户

发布于 2019-09-02 13:04:58

不过,可以在对象上循环。

代码语言:javascript
复制
const books = {
"book_1": ["image-1", "image-2", "image-3"], // 3
"book_2": ["image-1"], // 1
"book_3": ["image-1", "image-2"] // 2
}

let sum = 0;
let arr = [];

for(let i in books){
  sum += books[i].length;
  arr.push(sum);
}

console.log(arr);//[3,4,6]
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57757322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档