我有一个数组,其中包含内部对象,每个对象都有一个名为 sortOrder 的键和分配给它的数字,并且该对象根据顺序进行排序。如何动态更改 sortOrder 属性为我喜欢的任何数字,而无需手动更改 sortOrder 属性?我尝试使用 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()
在数组上使用 name
获取数组内的对象“sam”,然后更改其排序顺序,如下所示:
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 - 如何重新排列对象的排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57251594/