当前位置: 首页 > 知识库问答 >
问题:

按字母顺序对状态中的项目进行排序

壤驷经国
2023-03-14

我有一个基于类的React组件,它使用状态项和渲染结果。以下是我如何做到这一点的简短片段:

class Menu extends Component {
    constructor(props) {
        super(props);
        this.state = {
            items: props.items.edges,
            someItems: props.items.edges,
        }
    }

    render() {
        if (this.state.items.length > 0) {
            return (
                <div className="container">
                    <div className="row">
                        {this.state.someItems.map(({ node }) => {
                            return (
                                <div key={node.id}>
                                    <div>
                                        render some data
                                    </div>
                                </div>

                            )
                        })}
                    </div>
                </div>
            );
        }
    }
}

数据作为数组中的对象接收,如下所示:

我的问题是,在呈现这些项目之前,是否可以按字母顺序对其进行排序?最好的方法是什么?

共有1个答案

匡晟
2023-03-14

最好的方法是在将项目设置为状态之前对其进行排序。可以使用内置的Array.prototype.sort方法对项目进行排序。您可以使用String.prototype.localeCompare按字母顺序比较字符串。

我不知道您的数据的预期结构,所以这里有一个通用的解决方案。

class App extends React.Component {
    constructor(props) {
        super(props);

        // Make a copy so as not to modify the original array directly
        const sortedCopy = [...props.items];

        sortedCopy.sort((a, b) => a.name.localeCompare(b.name));

        this.state = {
            items: sortedCopy,
        };
    }

    render() {
        return (
            <div>
                {this.state.items.map((item) => (
                    <p key={item.id}>
                        <div>Item - {item.name}</div>
                    </p>
                ))}
            </div>
        );
    }
}

// Example items prop is out of order
const items = [
    { id: 0, name: "C" },
    { id: 1, name: "B" },
    { id: 2, name: "A" },
    { id: 3, name: "D" },
];

ReactDOM.render(<App items={items} />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
 类似资料:
  • 问题内容: 我必须创建一种方法,该方法根据电子邮件按字母顺序对对象的 ArrayList 进行排序,然后打印排序后的数组。我在排序时遇到的麻烦。我已经对其进行了研究并尝试使用,但这对我不起作用。我当时是需要一个称为比较器的东西,但无法弄清楚它是如何工作的。我将不得不使用这些东西吗?还是像气泡排序或插入排序这样的东西可以用于这种事情? 这是我到目前为止的代码: 问题答案: 排序部分可以通过实现cus

  • 问题内容: 我得到了一个数组(请参阅下面的数组中的一个对象),我需要使用JavaScript按名字排序。我该怎么做? 问题答案: 假设您有一个数组。您可以使用并传递一个接受两个参数并进行比较的函数(比较器) 它应该返回 如果第一个参数小于第二个参数,则为负数(应在结果数组的第二个参数之前放置) 如果第一个参数较大,则为正数(应放在第二个参数之后) 如果这两个元素相等,则为0。 在我们的情况下,如果

  • 问题内容: 我有这个: 和[电影]数组。如何按名称的字母顺序对数组进行排序?我试过了: 和 但这不起作用,因为我没有访问电影的名称属性。 问题答案: 在传递给的闭包中,比较要排序的属性。像这样: 或以下要绕过案例的案例: 旁注: 通常,只有类型以大写字母开头;我建议使用and ,而不是and 。 例如,在操场上: 将按顺序 Swift5更新

  • 问题内容: 我正在尝试按字母顺序了解元素内的排序元素。理想情况下,我想将此作为一个单独的函数,在这里我可以只传递select元素,因为在用户单击某些按钮时需要对它进行排序。 我在高低处搜寻了一种执行此操作的好方法,但找不到任何对我有用的方法。 选项元素应按文本而不是值按字母顺序排序。 这有可能吗? 问题答案: 我要做的是: 将每个文本和值提取到对象数组中; 对数组进行排序; 按顺序使用数组内容更新

  • 问题内容: 有没有一种简单的方法可以在Python中按字母顺序对字符串中的字母进行排序? 因此对于: 我想返回: 问题答案: 你可以做:

  • 本文向大家介绍C程序按字母顺序对名称进行排序,包括了C程序按字母顺序对名称进行排序的使用技巧和注意事项,需要的朋友参考一下 用户必须输入名称的数量,并且需要借助strcpy()函数按字母顺序对这些名称进行排序。 字符(或)字符集合的数组称为字符串。 声明 以下是数组的声明- 例如,char string [50]; 长度为50个字符的字符串。 初始化 使用单字符常量 使用字符串常量 访问 有一个控