У меня есть массив JSON, и я пытаюсь применить метод toLowerCase к
элемент «первый». Как мне применить это к списку объектов клиентов, а не только к одному клиенту?
Один клиент работает нормально:
console.info(String.prototype.toLowerCase.apply(data.Customers.Customer[0]["first"]))
console.info(String.prototype.toLowerCase.apply(data.Customers.Customer[1]["first"]))
возвращает Джима и Джима, как и ожидалось
Но когда я пытаюсь применить к массиву клиентов (удалено [0]):
console.info(String.prototype.toLowerCase.apply(data.Customers.Customer["first"]))
Ошибка:
TypeError: String.prototype.toLowerCase called on null or undefined at toLowerCase ()
Мой ввод json:
var data=JSON.parse('{"Клиенты":{"Клиент":[{"первый":["ДЖИМ"],"последний":["ЛУЧ"],"адрес":["22. ДЖИМ. RD.","возраст":["24"],"возраст2":["2.0"],"Телефон":["206-555-0144"]},{"первый":["c2"] ,"последний":["r2"],"адрес":["23. Р.Р.Д."],"возраст":["22"],"возраст2":["2.2"],"Телефон": ["999-555-0144"]}]}}')





Поскольку data.Customers.Customer — это массив, вам нужно выполнить итерацию по нему.
var data=JSON.parse('{"Customers":{"Customer":[{"first":["JIM"],"last":["BEAM"],"address":["22. JIM. RD."],"age":["24"],"age2":["2.0"],"Phone":["206-555-0144"]},{"first":["c2"],"last":["r2"],"address":["23. R. RD."],"age":["22"],"age2":["2.2"],"Phone":["999-555-0144"]}]}}')
data.Customers.Customer.forEach( c =>{
// console.info(c)
c.first = String.prototype.toLowerCase.apply(c.first)
})
console.info(data.Customers.Customer[0]["first"])
console.info(data.Customers.Customer[1]["first"])Насколько я понимаю, это две совершенно разные вещи, apply() позволяет вам использовать метод для разных объектов, но не имеет ничего общего с итерацией по массивам. Вы можете посмотреть на использование простого цикла for или некоторых новых итераторов ES6, если производительность имеет значение. связанные: stackoverflow.com/questions/5349425/…
У меня сложилось впечатление, что применение было значительно быстрее, чем foreach. Будет ли это в этом случае?