[英]How to filter an array of objects based on the first character of a property in the array of object?
I am trying to filter through an array of objects based on the first number of a property and I can;t get it to work properly.我正在尝试根据属性的第一个数字过滤一组对象,但我无法使其正常工作。
What I should have returning from the filter is the objects RowNumber has a starting row number of 1, and I need to use the filter method.我应该从过滤器返回的是对象 RowNumber 的起始行号为 1,我需要使用过滤器方法。 I can probably use a for loop and get the objects that I am looking to have returned, but would rather use the filter method as its cleaner.我可能可以使用 for 循环并获取我希望返回的对象,但宁愿使用 filter 方法作为其清洁器。
(function() { const ds = [{ ID: 1, RowNumber: "1" }, { ID: 2, RowNumber: "1.01" }, { ID: 3, RowNumber: "1.02" }, { ID: 4, RowNumber: "1.03" }, { ID: 5, RowNumber: "2.01" } ]; const gridDs = [{ ID: 1, RowNumber: "1", Name: "Box 1" }, { ID: 2, RowNumber: "1.01", Name: "Box 2" }, { ID: 3, RowNumber: "1.02", Name: "Box 3" }, { ID: 4, RowNumber: "1.03", Name: "Box 4" }, { ID: 5, RowNumber: "", Name: "" }, { ID: 6, RowNumber: "2", Name: "" }, { ID: 7, RowNumber: "2.01", Name: "Box 7" }, { ID: 8, RowNumber: "2.02", Name: "Box 8" }, { ID: 9, RowNumber: "3", Name: "Box 9" }, ]; const firstItem = ds[0]; const itemSplit = firstItem.RowNumber.split("."); const foundItems = gridDs.filter(f => f.RowNumber === firstItem.RowNumber && f.RowNumber.split(".")[0] === parseInt(itemSplit)); console.log(foundItems); })();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
itemSplit
is an array. itemSplit
是一个数组。 You need to get the first element of it, and parse it to an integers.您需要获取它的第一个元素,并将其解析为整数。
In the filter()
call, you shouldn't check f.RowNumber === firstItem.RowNumber
since you only care about the part before .
在filter()
调用中,您不应该检查f.RowNumber === firstItem.RowNumber
因为您只关心之前的部分.
in f.rowNumber
.在f.rowNumber
。 Parse the first part of this, and compare it with the number you're searching for.解析其中的第一部分,并将其与您要搜索的数字进行比较。
(function() { const ds = [{ ID: 1, RowNumber: "1" }, { ID: 2, RowNumber: "1.01" }, { ID: 3, RowNumber: "1.02" }, { ID: 4, RowNumber: "1.03" }, { ID: 5, RowNumber: "2.01" } ]; const gridDs = [{ ID: 1, RowNumber: "1", Name: "Box 1" }, { ID: 2, RowNumber: "1.01", Name: "Box 2" }, { ID: 3, RowNumber: "1.02", Name: "Box 3" }, { ID: 4, RowNumber: "1.03", Name: "Box 4" }, { ID: 5, RowNumber: "", Name: "" }, { ID: 6, RowNumber: "2", Name: "" }, { ID: 7, RowNumber: "2.01", Name: "Box 7" }, { ID: 8, RowNumber: "2.02", Name: "Box 8" }, { ID: 9, RowNumber: "3", Name: "Box 9" }, ]; const firstItem = ds[0]; const searchNumber = parseInt(firstItem.RowNumber.split(".")[0]); const foundItems = gridDs.filter(f => parseInt(f.RowNumber.split(".")[0]) === searchNumber); console.log(foundItems); })();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.