【问题标题】:sorting strings in an object inside an array [closed]对数组内对象中的字符串进行排序[关闭]
【发布时间】:2021-11-28 08:15:32
【问题描述】:

我一直在尝试对数组内的对象内的字符串进行排序。通过将字符串拆分为数组,我成功地对数组进行了排序。之后我将数组转回字符串。但后来当我打印结果时,数组里面的对象和以前一样。这是我的代码:

 function merge(arr, needed_length){

    for(var i = 0; i < arr.length; i++){
        console.log(arr[i]['A1'].split(', ').sort(function(a, b){
            return b - a;
        }).join(', '));

        console.log(arr[i]);
    }

}

console.log(merge([{A1:'8, 7, 9'}, {A1:'4, 8, 6'}, {A1:'2, 4, 3'}], 5));

这是打印出来的结果:

9, 8, 7
{ A1: '8, 7, 9' }
8, 6, 4
{ A1: '4, 8, 6' }
4, 3, 2
{ A1: '2, 4, 3' }

有人可以帮我理解为什么对象没有改变吗?提前谢谢你:)

【问题讨论】:

  • 您正在对来自.split(' , ') 的数组进行排序。这不会改变arr[i]['A1'] 的内容
  • 为什么你总是在arr (console.log(arr[0])) 中记录第一个元素? o.O
  • 如果要更改arr[i]['A1']的内容,应该怎么做?
  • 你需要assign
  • 我已经改成console.log(arr[i])

标签: javascript arrays string sorting object


【解决方案1】:

您需要将排序后的字符串分配回A1

function merge(arr){
    for(let obj of arr){
        obj.A1 = obj.A1.split(', ').sort((a, b) => b - a).join(', ');
    }
    return arr;
}

let arr = [{A1:'8, 7, 9'}, {A1:'4, 8, 6'}, {A1:'2, 4, 3'}];
merge(arr);
console.log(arr);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 2011-09-04
    • 1970-01-01
    • 2013-12-31
    • 2014-07-10
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    相关资源
    最近更新 更多