简体   繁体   English

如何根据对象数组中属性的第一个字符过滤对象数组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM