我有一个数组,其中包含对象,每个对象都有一个名为sortOrder的键和分配给它的数字,并且该对象会根据顺序进行排序。如何在不手动更改sortOrder属性的情况下,以我喜欢的任何数字更改sordOrder属性?我尝试了一个if语句,但是它不起作用,我也不知道为什么,这是我的代码:
const array = [{
name: "sam",
sortOrder: 0
}, {
name: "i",
sortOrder: 4
}, {
name: "that",
sortOrder: 2
}, {
name: "am",
sortOrder: 3
}];
// Reordering the sortOrder values:
if (array.name === 'sam') {
array.sortOrder = 4
}
array.sort((a, b) => a.sortOrder - b.sortOrder);
const list = document.getElementById("list");
const makeListItem = name => {
const li = document.createElement("li");
li.textContent = name;
return li;
};
array.forEach(item => list.appendChild(makeListItem(item.name)));
<ol id="list">
</ol>
这是link to a CodePen。
最佳答案
您的代码有问题
if(array.name === 'sam') {
array.sortOrder = 4
}
是
array
不具有属性name
或sortOrder
,是此数组中具有这些属性的对象。相反,您可以在数组上使用
.find()
来使用“ sam”的name
在数组内获取对象,然后按如下所示更改其sortOrder:const array = [{name: "sam", sortOrder: 0},{name: "i", sortOrder: 4},{name: "that", sortOrder: 2},{name: "am", sortOrder: 3}];
const samObj = array.find(obj => obj.name === "sam");
if (samObj) { // if an an object with the name of `sam` could be found, then we can safely modify its sortOrder property
samObj.sortOrder = 4
}
array.sort((a, b) => a.sortOrder - b.sortOrder);
console.log(array);
关于javascript - 如何重新排列对象的sortOrder,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57251594/