gpt4 book ai didi

javascript - 新的对象数组,但键已更改

转载 作者:行者123 更新时间:2023-11-30 11:23:59 26 4
gpt4 key购买 nike

我在使用对象数组选取一些数据并将其插入新对象(在不同的数组中)时遇到问题,但方式不同。

const fruits = [
{name: "apple"},
{name: "kiwi"},
{name: "banana"},
{name: "orange"},
{name: "pineapple"},
{name: "coconut"},
{name: "peach"},
{name: "lemon"}
]

我想从中挑选一些项目并将它们粘贴到全新的数组中,所以它看起来像这样:

const manyFruits = [
{name: "apple-banana-kiwi-coconut"},
{name: "orange-pineapple-peach-lemon"}]

最好是做一个函数,它接受我们想要挑选多少水果到新数组中并且它们不应该重复的参数。

下面是我的代码。首先,我用名称创建新数组,然后将它们插入取决于“长度”的新数组,最后我尝试用对象创建新数组,但失败了。

const fruitArray = length => {


const fruits = [
{name: "apple"},
{name: "kiwi"},
{name: "banana"},
{name: "orange"},
{name: "pineapple"},
{name: "coconut"},
{name: "peach"},
{name: "lemon"}
]

const allFruits = []

for (let i = 0; i < fruits.length; i++) {
allFruits.push(fruits[i].name)
}

const newFruits =[]

for (let i = 0; i < length; i++) {
newFruits.push(allFruits[i])
}

const manyFruitsInOneArr = []

for (let i = 0; i < 2; i++) {
let newArr = {
name: newFruits.join("-"),
}

manyFruitsInOneArr[i] = (newArr)
}

console.log(manyFruitsInOneArr)

}
fruitArray(2)

它在新数组中生成新对象,但项目始终相同。

最佳答案

您可以使用 for 循环和内部 map() 方法为此创建函数以获取名称数组和 join() 来创建来自值的字符串。

const fruits = [{"name":"apple"},{"name":"kiwi"},{"name":"banana"},{"name":"orange"},{"name":"pineapple"},{"name":"coconut"},{"name":"peach"},{"name":"lemon"}]

const pick = (arr, n) => {
const r = [];
for (var i = 0; i < arr.length; i += n) {
const name = arr
.slice(i, i + n)
.map(({name}) => name)
.join('-');

r.push({name})
}
return r;
}

const result = pick(fruits, 2)
console.log(result)

更新:要获取每个切片的名称和能量总和,您可以使用 map()reduce() 方法。

 fruits = [ {name: "apple", energy: 100}, {name: "kiwi", energy: 126}, {name: "banana", energy: 150}, {name: "orange", energy: 118}, {name: "pineapple", energy: 98}, {name: "coconut", energy: 83}, {name: "peach", energy: 65}, {name: "lemon", energy: 36} ] 

const pick = (arr, n) => {
const r = [];
for (var i = 0; i < arr.length; i += n) {
const slice = arr.slice(i, i+n);
const name = slice.map(({name}) => name).join('-')
const energy = slice.reduce((r, {energy}) => r + energy, 0);
r.push({name, energy})
}
return r;
}

const result = pick(fruits, 2)
console.log(result)

关于javascript - 新的对象数组,但键已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48731643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com