【问题标题】:How can I loop 2D array and modify its values如何循环二维数组并修改其值
【发布时间】:2021-10-08 18:23:34
【问题描述】:

鉴于John doe 在旅途中拍摄的二维照片,因此我被要求重命名照片并将actual 名称替换为拍摄照片的city name

const photos = [
['photo.jpg', 'kigali','2013-09-05 14:08:09'],
['demmpa.jpg', 'kigali','2013-09-05 14:08:09'],
['third.jpg', 'kibuye','2013-02-05 12:08:09']
['forthpic.jpg', 'kampala','2013-02-05 12:08:09']
]
   photos.map((photo, index)=>{
    photo.filter((photo, index)=> console.log(photo))
    
  })

实际输出

"photo.jpg"
"kigali"
"2013-09-05 14:08:09"
"demmpa.jpg"
"kigali"
"2013-09-05 14:08:09"

预期输出

kigali01.jpg
kigali02.jpg
Kibuye1.jpg
kampala1.jpg

【问题讨论】:

  • 你试过什么。请在您的预期输入中至少提供 2 个元素,以便我们为您提供帮助
  • 为什么 kigal 上的编号带有 0 而其他的则没有?
  • 第一个出现的city0 开头,然后在同一个城市增加数字
  • 您确定它不应该返回['kigali01.jpg', 'kigali02.jpg', 'Kibuye01.jpg', 'kampala01.jpg']['kigali1.jpg', 'kigali2.jpg', 'Kibuye1.jpg', 'kampala1.jpg'] 吗?如果非常奇怪,数字的变化风格。而且,你自己的尝试在哪里?你试过解决这个问题吗?你有什么问题?请看How do I ask and answer homework questions?
  • 0 只能附加在第一个城市和在同一城市拍摄的类似照片@ScottSauyet

标签: javascript algorithm recursive-datastructures


【解决方案1】:
let photos = [
['photo.jpg', 'kigali','2013-09-05 14:08:09'],
['demmpa.jpg', 'kigali','2013-09-05 14:08:09'],
['third.jpg', 'kibuye','2013-02-05 12:08:09'],
['forthpic.jpg', 'kampala','2013-02-05 12:08:09']
]

 photos = Array.from(photos).map((photo)=>{
 const format = photo[0].split('.')[1]
 photo[0]=photo[1]+'.'+format
 return photo
})

【讨论】:

  • 你能解释一下你的代码吗?它如何产生预期的输出?
  • 首先我对照片数组进行了映射,然后我从索引中获取格式,然后我将第一个索引更改为城市名称 + 格式
  • 复制的名称应该有数字。我认为您的代码中缺少这一点。
【解决方案2】:

您可以使用map 进行操作。而occurrence 只会保留名称重复的次数。

注意:如果需要添加前导零,请查看 How to output numbers with leading zeros in JavaScript?

const photos = [
  ['photo.jpg', 'kigali','2013-09-05 14:08:09'],
  ['demmpa.jpg', 'kigali','2013-09-05 14:08:09'],
  ['third.jpg', 'kibuye','2013-02-05 12:08:09'],
  ['forthpic.jpg', 'kampala','2013-02-05 12:08:09']
];

const occurrence = {}

const newArray = photos.map(arr => {

  const ext = arr[0].split('.')[1]; // file extension

  if (occurrence[arr[1]]) { // check whether the name is already there
    occurrence[arr[1]]++;
    return `${arr[1]}${occurrence[arr[1]]}.${ext}`;
  }
  
  occurrence[arr[1]] = 1;
  return `${arr[1]}1.${ext}`;

});


console.log(newArray)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2019-06-02
    • 2019-11-05
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    相关资源
    最近更新 更多