gpt4 book ai didi

javascript - 如何对网页中具有多个不同参数的 JSON 进行排序?

转载 作者:行者123 更新时间:2023-11-27 23:00:12 24 4
gpt4 key购买 nike

对于一所学校,我正在创建一个程序,该程序使用 JSON 和 JavaScript 将数据拉回到网页上。我了解如何对数组进行排序并拉回它们匹配的值。可以说我有这个 JSON。

{"name":"Michael","age":30,"bday":"05/12/1982"}
{"name":"Andy", "age":30,"bday":"02/21/1992"}
{"name":"Justin", "age":19,"bday":"12/07/1972"}

我如何能够输入姓名、选择年龄和输入生日,并可以根据所使用的任意组合进行排序。

是说每个 30 岁且出生于 1992 年 2 月 21 日的人,还是每个 30 岁的人?我希望能够按数据输入的每种可能的组合进行排序,并且我不想只使用一堆 if() 语句。

最佳答案

该算法会查找 search 中的每个属性,如果所有比较都为 true,则该元素将添加到结果集中。

function filter(array, search) {
return array.filter(function (a) {
return Object.keys(search).every(function (k) {
return (
a[k] === search[k] ||
typeof search[k] === 'object' && +search[k].min <= a[k] && a[k] <= +search[k].max ||
typeof search[k] === 'function' && search[k](a[k])
);
});
});
}

var data = [{ name: "Michael", age: 30, bday: "05/12/1982" }, { name: "Andy", age: 30, bday: "02/21/1992" }, { name: "Justin", age: 19, bday: "12/07/1972" }];

// serach for name with n
document.write('<pre>' + JSON.stringify(filter(data, { name: function (s) { return s.match(/n/i); } }), 0, 4) + '</pre>');

// search for age = 30
document.write('<pre>' + JSON.stringify(filter(data, { age: 30 }), 0, 4) + '</pre>');

// search for age = 30 and bday = 02/21/1992
document.write('<pre>' + JSON.stringify(filter(data, { age: 30, bday: '02/21/1992' }), 0, 4) + '</pre>');

// search for age between 18 and 20
document.write('<pre>' + JSON.stringify(filter(data, { age: { min: 18, max: 20} }), 0, 4) + '</pre>');

关于javascript - 如何对网页中具有多个不同参数的 JSON 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37186905/

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