【问题标题】:Add key and values to an object in an array in Javascript在Javascript中将键和值添加到数组中的对象
【发布时间】:2020-10-10 23:30:25
【问题描述】:

我想在 resultLog 中为我的对象添加键和值,我尝试了几种不同的方法,但都没有成功。 (进一步了解我想要实现的目标)。

这是我目前的输出:

我已经将我的数组推入对象并添加了键.....但现在我卡住了。

let result = [5, 4, 1, 1];
let resultLog = [];

for (let i = 0; i < result.length - 1; i += 2) {
  resultLog.push({ pageViews: result[i], visitors: result[i + 1] });
}
console.log(resultLog);
// output [{pageViews: 5, visitors: 4},{ pageViews: 1, visitors: 1}]

我需要为每个对象添加键和值,但我该怎么做呢? 我看过 .splice.unshift 但无法正常工作。

这是我想要的样子:

let result = [
  { url: "/contac.html", pageViews: 5, visitors: 4 },
  { url: "/home.html", pageViews: 1, visitors: 1 }
];

console.log(result)
console.table(result);

这是我提取每个 url 的唯一用户数和 pageView 数的数组。

const filtered =[
"|2019-03-01 09:00:00UTC |/contact.html |12345 |", 
"|2019-03-01 09:00:00UTC |/contact.html |12346 |",
"|2019-03-01 10:00:00UTC |/contact.html |12345 |", 
"|2019-03-01 10:30:00UTC |/home.html    |12347 |", 
"|2019-03-01 11:00:00UTC |/contact.html |12347 |", 
"|2019-03-02 11:00:00UTC |/contact.html |12348 |"]

【问题讨论】:

  • 你到底是怎么卡住的?
  • 您的预期结果与当前结果几乎相同,只是还有一个成员。
  • @NithinChandran 我想向我的对象添加另一个成员,我想将这两个键和值 url: "/contac.html", url: "/home.html" 添加到每个对象,是不是更清楚?
  • 这些值从何而来?它们是否在已经排序以匹配第一个数组result = [5, 4, 1, 1] 的数组中?
  • @Cid 这些值来自我解构的另一个(原始)数组,我试图添加到这个新数组的值也在原始数组中......也许我让它变得更复杂了我需要?编码新手,所以想弄清楚。

标签: javascript arrays object key-value


【解决方案1】:

你可以试试这个

var obj= {array:[]};
for (let i = 0; i < result.length - 1; i += 2) {
  obj.array.push({ pageViews: result[i], visitors: result[i + 1] });
}

【讨论】:

    【解决方案2】:
    const filtered = [
    "|2019-03-01 09:00:00UTC |/contact.html |12345 |",
    "|2019-03-01 09:00:00UTC |/contact.html |12346 |",
    "|2019-03-01 10:00:00UTC |/contact.html |12345 |",
    "|2019-03-01 10:30:00UTC |/home.html    |12347 |",
    "|2019-03-01 11:00:00UTC |/contact.html |12347 |",
    "|2019-03-02 11:00:00UTC |/contact.html |12348 |"]
    

    1.统计页面浏览量和访问者

     const pageDict = filtered.reduce((prev, cur) => {
        // remove first `|` and last `|`
        const record = cur.replace(/(^\|)|(\|$)/g, '');
        const [time, url, userId] = record.split('|').map((v) => v.trim());
        if (url in prev) {
            prev[url].pageViews++;
            prev[url].visitors.add(userId);
        } else {
            // if url not in prev, init 
            prev[url] = {
                pageViews: 1,
                visitors: new Set([userId]),
            }
        }
        return prev;
    }, {});
    

    2.格式化数据

      const result = Object.entries(pageDict).map(([key, value]) => {
        const { pageViews, visitors } = value;
        return {
            url: key,
            pageViews: pageViews,
            visitors: visitors.size,
        }
    })
    console.log(result);
    
    1. 打印结果是:

         [
       { url: '/contact.html', pageViews: 5, visitors: 4 },
       { url: '/home.html', pageViews: 1, visitors: 1 }]
      

    【讨论】:

      猜你喜欢
      • 2014-07-09
      • 2016-02-11
      • 1970-01-01
      • 2021-06-21
      • 2019-07-03
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多