arr = [
{id: 1, common: 'first'},
{id: 2, common: 'middle'},
{id: 3, common: 'middle'}
]
把最后一个common的middle替换为last,用js要怎么弄
arr = [
{id: 1, common: 'first'},
{id: 2, common: 'middle'},
{id: 3, common: 'middle'}
]
把最后一个common的middle替换为last,用js要怎么弄
用 Lodash 的 findLast
或者 findLastIndex
都可以
import _ from "lodash";
const arr = [
{ id: 1, common: "first" },
{ id: 2, common: "middle" },
{ id: 3, common: "middle" }
];
const found = _.findLast(arr, it => it.common === "middle");
if (found) {
found.common = "last";
}
console.log(arr);
如果不想用 Lodash,自己写一个也容易,逆向循环查找就行
Array.prototype.findLast = function (predicate) {
for (let i = this.length - 1; i >= 0; i--) {
if (predicate(this[i])) {
return this[i];
}
}
};
const found = arr.findLast(it => it.common === "middle");
if (found) { found.common = "last"; }
console.log(arr);
如果想判断是否是重复的项,可以进行正向查找和反向查找,看得到的 index
是否相同。
function set(arr, key, value) {
for (var i = arr.length; i--;) {
if (arr[i].hasOwnProperty(key)) {
arr[i][key] = value;
return i;
}
}
return -1;
}
console.dir(set(arr, "common", "last"));
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
简单理解了一下楼主的需求,供参考