【发布时间】:2021-12-20 03:45:35
【问题描述】:
目前,我有一个函数,可以在 1 个数组中加入 2 个具有相同权重的数据。我的目标是如何以不同的价值加入他们?我有一个等于 15 的默认值作为差异。 附加:我需要限制。数组中应该只有小于或大于 15 个重量差异。如果超过,那么它不应该在同一个数组中。
例如:
entryID:1 weight:1900 和 entryID:2 1915 将在数组 1 中... entryID:3 weight:1915 和 entryID:4 1920 将在数组 2 中。
//当前sn-p如果权重相同,则将2个数据加入1个数组中。我的目标是将 2 个数据也加入 1 个数组中,但权重不同。
const source = [{
entryID: 1,
entryName: 'player1',
weight: 1900,
},
{
entryID: 2,
entryName: 'player2',
weight: 1915,
},
{
entryID: 3,
entryName: 'player3',
weight: 1915,
},
{
entryID: 4,
entryName: 'player4',
weight: 1920,
},
{
entryID: 5,
entryName: 'player5',
weight: 1950,
},
{
entryID: 6,
entryName: 'player6',
weight: 1965,
},
]
const combine = (source) => {
return source.reduce((acc, curr) => {
if (acc[curr.weight]) {
const levelArr = acc[curr.weight];
const last = levelArr[levelArr.length - 1];
if (last.length === 2) {
levelArr.push([curr])
} else {
last.push(curr)
}
} else {
acc[curr.weight] = [
[curr]
];
}
return acc;
}, {})
};
var result = combine(source)
var html = ""
var keys = Object.keys(result) //if there are more than one keys i.e : 2..
for (var i = 0; i < keys.length; i++) {
result[keys[i]].forEach(function(val) {
val.forEach(function(value, index) {
var entryIDs = index == 0 ? "entryIDM[]" : "entryIDW[]"
var handlers = index == 0 ? "handlerM[]" : "handlerW[]"
var weights = index == 0 ? "weightM[]" : "weightW[]"
html += `<input type="text" name="${entryIDs}" value="${value.entryID}">
<input type="text" name="${handlers}" value="${value.entryName}">
<input type="text" name="${weights}" value="${value.weight}">
`
})
})
}
document.getElementById("result").innerHTML = html
console.log(result);
<div id="result">
</div>
我的预期输出:
{
1900_1915: [[{
entryID: 1,
entryName: "player1",
weight: 1900
}, {
entryID: 2,
entryName: "player2",
weight: 1915
{
1915_1920: [[{
entryID: 3,
entryName: "player3",
weight: 1915
}, {
entryID: 4,
entryName: "player4",
weight: 1920
}
【问题讨论】:
-
你能将预期的输出添加到问题中吗?
-
您的要求还不清楚。你的句子“我的目标是在 1 个数组中加入 2 个数据,但权重不同。”不清楚。如果你想加入一个数组,你必须想要一些共同的东西,对吧?您当前的逻辑基于相同的权重是正确的。请添加您的预期输出或详细说明。
-
这是我的预期输出:{ 1900_1915: [[{ entryID: 1, entryName: "player1", weight: 1900 }, { entryID: 2, entryName: "player2", weight: 1915 { 1915_1920: [[{ entryID: 3, entryName: "player3", weight: 1915 }, { entryID: 4, entryName: "player4", weight: 1920
-
@HardikShah 如果让您感到困惑,我很抱歉。在我目前的功能上。我可以将 2 个数据加入 1 个具有相同权重的数组中。但是对于我的下一个目标。我想加入 2 个不同值的数据。差异不应超过 15。我提供旧代码的原因是因为我认为它接近我的目标。我只需要添加一些功能即可。对不起,我是新手。
标签: javascript html